Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Access VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

Открыть новую тему     Написать ответ в эту тему

Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
   
 
Обсуждаем вопросы только по Access VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.

 

NB! Дублирующая тема VBA for Access закрыта во избежание путаницы. Оставлена эта, как более ранняя и имеющая больше сообщений.

Смежные темы:
Помощь в создании SQL-запросов: SQL запрос
Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
Программы » Word FAQ | Excel FAQ | Access FAQ
Прикладное программирование » Word VBA | Excel VBA
Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007
----------
Как в Access перместить запись из одной таблицы в другую (допустим по нажатию кнопки на форме)?

Отправлено: 18:31 05-09-2002 | Исправлено: ALeXkRU, 17:14 03-08-2021
Kat iynok



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RffR255
можно попробывать сделать БД доступной только при наличии какого либо файла(просто ещё одна защита). Я такое использовала в своей программе, получается ты создаёшь этот файл, размещаешь его где-нибудь, и прописываешь вот этот код:  
 
 
DoCmd.SelectObject acForm, "Êíîïî÷íàÿ ôîðìà", True
    DoCmd.Minimize
    Dim strFile As String
   
     strFile = Dir("C:\Program Files\Microsoft Office\config.kr")
     If strFile <> "config.kr" Then
        DoCmd.Quit
     End If
 
Если твою БД скопировали то она всё равно у них на локальной машине не откроется без этого файла.

Всего записей: 6 | Зарегистр. 09-05-2006 | Отправлено: 15:54 21-06-2006
kolob204



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте у меня такой вопрос.
 
Есть некая иерархия таблиц, т.е. допустим на форме есть 4 ПоляСоСписком:
Первое поле жёстко определено таблицей1 (ТАБЛ1) (Код, название_поля)
А содержание последующи ПолеСоСписком2,3,4 должны зависеть от выбора предыдущих.
 
Т.е.: ТАбл1-Табл1.1-Табл2.1-Табл3.1.1
                                            Табл3.1.2
                                            Табл3.1.3
                              -Табл2.2-Табл3.2.1
                                            Табл3.2.2
                                            Табл3.2.3
 
                              -Табл2.3-Табл3.3.1
                                            Табл3.3.2
                                            Табл3.3.3
 
И так далле, т.е при Выборе Поля в одном списке в ПолеСоСписком соотвественно загружается информация из связанной таблицы.
 
Не получается
То почемуто форма пустой появляется (возможно ошибки в запросах делаю в область данных, не знаю) То просто не загружаются данные в следующую строку.
Может кто делал подобное, и есть примеры.
 
Вообщем не знаю я Access  
 
PS: Буду очень признателен за любую помощь.
Помогите составить запросы, и как лучше организовать связи этих таблиц?
 
UPDATE
Может я неправильно сужу об такой организации. Я переделываю то что спрашивал на предыдущей странице - т.е. нужно чтобы Статья выбиралась не просто по названию, а сначала происходил выбор Тематики.
Пример:
Компьютеры
     Железо
         Процессоры -> Статья
          Мат Платы  -> Статья
      ПО
         Acrobat -> Статья
         и тп...
Программирование
     Делфи
     Assemler
и тп...

Всего записей: 41 | Зарегистр. 08-11-2005 | Отправлено: 18:12 28-06-2006 | Исправлено: kolob204, 19:18 28-06-2006
griin



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть таблица примерно такой структуры:  
"ид" "ид_группы" "имя"    
1 группа 1 Вася    
2 группа 1 Петя    
3 группа 1 Коля    
4 группа 2 Иван    
5 группа 2 Сергей    
6 группа 2 Саша

 
Нужно на основе этой таблицы составить список существующих групп, то есть надо составить запрос, который вернет два результата: "группа1" и "группа2". Если мне не изменяет память в этом случае надо использовать ключевое слово DISTINCT, но запрос "SELECT DISTINCT * FROM Таблица" возвращает все записи. Помогите правильно построить запрос. ЗАранее спасибо.
 

Всего записей: 567 | Зарегистр. 03-01-2003 | Отправлено: 10:27 05-07-2006 | Исправлено: griin, 10:28 05-07-2006
Nightcrawler

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SELECT DISTINCT ид_группы FROM Таблица

Всего записей: 98 | Зарегистр. 11-05-2004 | Отправлено: 10:31 05-07-2006
griin



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nightcrawler, спасибо, сработало, но такая функциональность немного не устраивает, так как для работы выбрать нужно все поля из таблицы, а таким запросом выбирается только "ид_группы". Можно построить запрос таким образом, чтобы выбирались все поля из строк с уникальным "ид_группы"?
 
Добавлено:
Вопрос уже не очень актуален, т.к. обошелся двумя запросами... Хотя по прежнему интересно, можно ли сделать такую выборку одним запросом...
 
Добавлено:
Теперь надо составить немного более сложный запрос. Есть две таблицы.
 
Группы:
"ид" "ид_группы" "имя"    
1 группа 1 Вася    
2 группа 1 Петя    
3 группа 1 Коля    
4 группа 2 Иван    
5 группа 2 Сергей    
6 группа 2 Саша

 
Команды:
"ид" "ид_команды" "ид_группы"    
1 команда 1 группа 1    
2 команда 1 группа 2    
3 команда 2 группа 3    
4 команда 2 группа 4    
5 команда 2 группа 5    
6 команда 2 группа 6

 
Логика такая: несколько человек образуют группу, несколько групп образуют команду. Надо одним запросом выбрать всех людей из определенной команды. Пробовал запрос вида "SELECT * FROM Группы WHERE ид_группы = (SELECT ид_группы FROM Команды WHERE ид_команды = "команда 1")", но этот запрос не возвращает никакого результата.
 

Всего записей: 567 | Зарегистр. 03-01-2003 | Отправлено: 10:45 05-07-2006
Nightcrawler

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуй
SELECT * FROM Группы WHERE ид_группы IN (SELECT ид_группы FROM Команды WHERE ид_команды = "команда 1")"
 
Добавлено:

Цитата:
Хотя по прежнему интересно, можно ли сделать такую выборку одним запросом...  

 
IMHO, это не возможно т.к. язык SQL предполагает однозначность запроса при выборке, тут же ее нет... в одном случае можно вернуть 1 и3 строки, в другом - 2 и 4. Обе будут удовлетворять одному запросу, что не есть правильно...

Всего записей: 98 | Зарегистр. 11-05-2004 | Отправлено: 12:34 05-07-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
griin
Используй INNER JOIN, примерно так:

Код:
SELECT * FROM Группы INNER JOIN Команды ON Команды.ид_группы=Группы.ид_группы
WHERE Команды.ид_команды = "команда 1"

Вместо * можно перечислять поля с указанием таблицы.
 
 
Добавлено:

Цитата:
Хотя по прежнему интересно, можно ли сделать такую выборку одним запросом...  

Можно через GROUP BY, если определишься или какое имя показывать для каждой группы (например, первое или последнее), или подсчитать число членов в группе.

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 19:15 05-07-2006 | Исправлено: Yuk, 00:26 06-07-2006
kolob204



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Видимо мой вопрос не правильно сформулирован или ответа на него нет?

Всего записей: 41 | Зарегистр. 08-11-2005 | Отправлено: 23:18 05-07-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kolob204
Ну что ж, поскольку у тебя таблицы не описаны возьмем пример от griin.
Добавим на форму 2 выпадающих списка combo1 и combo2.
1-й будет выдавать команды, 2-й - группы.
В RowSource 1-го вставим:
Код:
SELECT DISTINCT Команды.ид_команды FROM Команды;  

Создадим функцию для 1-го списка:
Код:
Private Sub combo1_Change()
    combo2.RowSource = "SELECT DISTINCT Команды.ид_группы FROM Команды WHERE Команды.ид_команды=combo1.Value;"
    combo2.Value = ""
End Sub

Можно добавить функцию для инициализации формы:
Код:
Private Sub Form_Load()
    combo1.Value = ""
    combo2.Value = ""
End Sub

Примерно так. Для 3-х и более списков логика примерно та же.

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 00:25 06-07-2006 | Исправлено: Yuk, 00:28 06-07-2006
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ищу информацию, способы и программы(можно и платные) для декомпиляции mde файлов. База 97-я.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 10:27 07-07-2006
Nightcrawler

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ищу информацию, способы и программы(можно и платные) для декомпиляции mde файлов. База 97-я

Access MDE Unlocker ? hxxp://www.gonnasoft.com/Business/Databases-Tools/Access-MDE-Unlocker-29399.html

Всего записей: 98 | Зарегистр. 11-05-2004 | Отправлено: 12:52 07-07-2006
Agilyera



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет,
У меня сложность с Access. Стандартыми средствами построил таблицы и форму для ввода пользователей.  
 
У пользователей есть дополнительная информация содержащихся в файлах, разложенных по папкам. В форме нужно сделать кнопку обзора на папки, и в случае выбора, сохранение пути в таблице в виде ссылки.  
 
Вопрос как это сделать? думаю стандартными средствами этого не провернуть. Подскажите пожалуйста ? можно ли вообще ? я с VB не знаком. Хотя навыки программирования имеются.  
 

Всего записей: 260 | Зарегистр. 26-02-2003 | Отправлено: 11:04 10-07-2006 | Исправлено: Agilyera, 16:21 10-07-2006
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Agilyera
Смотри в хелпе функцию Dir. Там и примеры есть подходящие.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 18:44 10-07-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Agilyera
Поставь функцию на обычную кнопку:
Код:
Private Sub CommandButton1_Click()
    Dim fName As String
    fName = Application.GetOpenFilename()
    If Not fName = "False" Then
        TextBox1.Value = fName
    End If
End Sub

Если нужно открыть файл в определенном каталоге, используй Chdrive, Chdir. Также функция GetOpenFilename имеет ряд полезных параметров, см. хелп.

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 18:50 11-07-2006
poushkar



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
создаю таблицу с помощью конструктора,ставлю ключ на первую строку (Код страны), её тип ставлю - числовой, и незнаю как сделать так,чтоб была таблица, например:
 
Код Страны | Страна
       1               Украина
       2               Россия
       3               Беларусь
       1               Украина
 
 
Когда я делаю ключём строку "Код страны" - нельязя выбрать в её опциях возможность повторения при вводе в таблицу, так как при установке ключа на какую-либо строку - в ней повторение автоматически становится невозможным.
 
Как быть ?

Всего записей: 14 | Зарегистр. 16-02-2006 | Отправлено: 23:51 11-07-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
poushkar
Ключ обязан быть уникальным. Либо вобще не создавай ключ, либо сделай дополнительное поле - идентификатор строк.

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 00:26 12-07-2006
poushkar



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тогда становится ненужным "Код страны", так как именно он и является идентификатором...а без этого "кода страны" нельзя. так поставлена задача

Всего записей: 14 | Зарегистр. 16-02-2006 | Отправлено: 01:39 12-07-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
poushkar
Тогда объясни разницу между 1-й и 4-й строками. Если ты привел все поля, 4-я запись тебе не нужна, так как она идентична 1-й (или нет?;)).  
Если же в таблице есть что-то еще, то покажи всю таблицу. В этом случае, ключом будет не код страны, а что-то другое. Если же тебе нужен код страны как ключ, вынеси все страны в отдельную таблицу.  

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 03:57 12-07-2006
poushkar



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ты прав, она не нужна в данном примере...В общем задача состоит в создании БД с данными о нафтогазоносных месторождениях.
Есть  данные о :
Названии региона, названии области, названии месторождения, местонахождении месторождения, типе месторождения, размере за залежами нефти, размере за залежами газа, годе открытия, годе введения в разработку.
Надо создать таблицы:
1.Регион - код региона, название региона;
2.Область - код региона, код области, название области;
3.Месторождение - код области , код месторождения, название месторождения, местоположение месторождения, код типа месторождения, код  
размера за залежами нефти, код размера за залежами газа, год открытия, год введения в разработку;
4.Тип месторождения - код типа месторождения, тип  
месторождения;
5.Размеры месторождения - код размера месторождения, размеры  
месторождения.
 
Задача заключается в следующем:
Изготовить отчет о распределении количества месторождений в областях за типом месторождения. Напротив названий областей и  
месторождений, разделенных пробелом, установить значение количества для каждого типа месторождения. Предусмотреть итоги по  
вертикали и по горизонтали. К заглавию отчета прибавить слова “состоянием на  ” и установить текущую дату.
 
 
В общем я не хотел всю задачу выкладывать.. Буду пытаться сделать это сам. Хотя сегодня первый раз работаю с Access ( так сложились обстоятельства, что мне доручили сделать эту БД ). Но вижу, что мои примеры "дешевые" Так что думаю легче будет разобраться на настоящей задаче...

Всего записей: 14 | Зарегистр. 16-02-2006 | Отправлено: 05:11 12-07-2006 | Исправлено: poushkar, 05:13 12-07-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С таблицами у тебя вроде проблем нет. Повторюсь, что все записи в них должны быть уникальны. Порядок записей в таблице никак не определяется.
Ключи определяются беz проблем. В таблице Регион - это код региона,  
Область - код области, Месторождение - код месторождения,  
Тип месторождения - код типа месторождения, Размеры месторождения - код размера месторождения.
При составлении запроса соедини общие поля в таблицах. Например, код региона в таблицах Регион и Область. Это создаст INNER JOIN связь между таблицами. В запросе тебе похоже придется использовать агрегатные функции с группировкой для итогов по горизонтали. У меня аксесс английский - группировка включается, если нажмешь правой кнопкой мыши на таблице запроса (в режиме дизайна) - Totals (или в меню View - Totals).
Для итогов по вертикали нужно будет использовать объединять несколько запросов или лучше создавать отчет.
В общем, поиграйся, будут вопросы - спрашивай.

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 08:54 12-07-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Access VBA


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru