powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передать ID таблицы в запрос на добавление
9 сообщений из 9, страница 1 из 1
Передать ID таблицы в запрос на добавление
    #39445719
Повар555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, знатоки!
Возникла необходимость копировать кликом мышки некоторый строки из табличной формы в отдельную таблицу, в которой некоторое время накапливаются данные.
Т.е. копировать указанные строки из Tab1 в Tab2. Обе таблицы одинаковые.
Содержат столбцы (упрощаю для простоты):
id (счетчик)
Название (String)
Количество (Integer)
Долго мучился, но толком информации не нашёл... куски кода...советы, а рабочего примера нет.
Временно решил проблему таким образом. Создал запрос на добавление, куда добавил ввод параметра, который вводится
пользователем в диалоговом окне
Код: sql
1.
2.
.....
WHERE (((Tab1.Id)=[Введите код записи:]));


На КодЗаписи в форме прописал
Код: vbnet
1.
2.
3.
Private Sub КодЗаписи_DblClick(Cancel As Integer)
    DoCmd.OpenQuery "зКопироватьЗаписьВTab2"
End Sub


При нажатии на нужной строке (по КодуЗаписи) загружается запрос, и ВРУЧНУЮ вводится код записи. Запрос отрабатывает правильно - указанная запись копируется из Tab1 в Tab2.
Но такая технология в наше время просто неприемлема!
Как передать параметр (id) в запрос по клику?
Или как копировать другим способом?
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39445852
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повар555,

Ну раз вы уже кликаете по этому коду записи, видите его, потом вводите руками...
Замените в условии WHERE (((Tab1.Id)=[Введите код записи:])) зачеркнутое на путь к этому полю код записи и всё... Как обратиться к полю:
Forms!ИмяГлавнойФормы!ИмяПоля - это если форма одна и поле прямо в ней...
Forms!ИмяГлавнойФормы!ИмяПодчиненнойФормы!ИмяПоля - это если поле в подчиненной форме...
Можно мастером попробовать вставить условие (естественно имена реальные подставить, а имя поля это ваш код записи)...

Тут проще, - не получилось, можно переделать, не боись, кастрюлю с не удавшимся борщом на помойку нести не нужно...
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39445866
Проще так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub КодЗаписи_DblClick(Cancel As Integer)
Dim rst As DAO.Recordset

  If Me.NewRecord Then Exit Sub

  Set rst = CurrentDB.OpenRecordset("SELECT * FROM Tab2 WHERE 1=0")
  rst.AddNew
  rst![Название] = Me![Название]
  rst![Количество] = Me![Количество]
  rst.Update
End Sub
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39446023
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повар555,
поле ID в тбл2 является счетчиком и вставить в него значение из одноименного поля тбл1 не удастся
нужно либо копировать без него(поле ID тбл2 заполнится автоматом и навряд-ли будет совпадать со значением в тбл1-в коде предложенном Анатолий ( Киев ) так и сделано),либо добавлять в тбл2 поле "ЗнСчетчикаТабл1"
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39446354
Повар555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вырвался с кухни, пора делом заняться!

vmag,
Это примерно так?
Код: sql
1.
WHERE (((Tab1.Id=Forms!ИмяГлавнойФормы!ИмяПодчиненнойФормы!ИмяПоля))


Попробую.
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39446355
Повар555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Проще так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub КодЗаписи_DblClick(Cancel As Integer)
Dim rst As DAO.Recordset

  If Me.NewRecord Then Exit Sub

  Set rst = CurrentDB.OpenRecordset("SELECT * FROM Tab2 WHERE 1=0")
  rst.AddNew
  rst![Название] = Me![Название]
  rst![Количество] = Me![Количество]
  rst.Update
End Sub


Что значит кусок кода?
Код: vbnet
1.
WHERE 1=0


Остальное смотрится понятно и не так страшно.
Буду пробовать. Спасибо.
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39446360
Повар555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuПовар555,
поле ID в тбл2 является счетчиком и вставить в него значение из одноименного поля тбл1 не удастся
нужно либо копировать без него(поле ID тбл2 заполнится автоматом и навряд-ли будет совпадать со значением в тбл1-в коде предложенном Анатолий ( Киев ) так и сделано),либо добавлять в тбл2 поле "ЗнСчетчикаТабл1"
Запрос пишет в тбл2 точный код из первой таблицы - полностью совпадает. Так же копирует и другие поля таблицы. С другой стороны, это и не важно. Но в таблицах пришлось разместить все поля в одинаковой последовательности.Спасибо, учту.
Непривычно смотреть в таблицу Тбл2 с несколькими записями, первый Id которой начинается с номера 78765, а не с 1. :)
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39446367
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повар555Что значит кусок кода?
Код: vbnet
1.
WHERE 1=0

Ну Вы понимаете, что условие ложно? то есть рекордсет соединится с таблицей, но не отберёт при этом ни одно записи. Вставлять в него новые записи можно, и при этом существующие не мешаются (если не будет дублирование уникальных индексов) и нет опасности их попортить.
...
Рейтинг: 0 / 0
Передать ID таблицы в запрос на добавление
    #39446376
Повар555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Проще так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub КодЗаписи_DblClick(Cancel As Integer)
Dim rst As DAO.Recordset

  If Me.NewRecord Then Exit Sub

  Set rst = CurrentDB.OpenRecordset("SELECT * FROM Tab2 WHERE 1=0")
  rst.AddNew
  rst![Название] = Me![Название]
  rst![Количество] = Me![Количество]
  rst.Update
End Sub


Получилось! Всё работает как надо! Решил последовать Вашему совету и на VBA сделать. По аналогии.
В конце кода добавил MsgBox, а то не понятно, произошло копирование или нет. Уж очень быстро и незаметно операция проходит. Начнут мышью по 10 раз тыкать, потом дубликаты разгребать замучаешься.
Надо учиться, нужна практика. Пока для меня борщ проще приготовить. ;)

С WHERE 1=0 теперь всё понятно!
Спасибо за помощь!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передать ID таблицы в запрос на добавление
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]