Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Как переместить строчку из одной таблицы в другую


Автор: DelphianOracle 7.4.2008, 13:49
У меня есть форма, не привязаная к таблице. На форме есть список (List) в котором отображается одна таблица. Мне надо по нажатию на кнопку копировать или переместить выбранную строчку в другую таблицу. Как это сделать?
MSDN не помогает... :(

Автор: Akina 7.4.2008, 14:05
У контрола есть свойство ItemsSelected. Это коллекция выделенных в данный момент записей. Можно обработать ее - для каждой записи коллекции получить значение ключа и выполнить запрос, который скопирует или переместит запись с этим ключом в требуемую таблицу. После чего, если выполнялось перемещение, нужно перезапросить источник данных контрола.

Автор: DelphianOracle 7.4.2008, 14:28
Уважаемый Akina, я работаю с Access второй раз в жизни, так что пожалуйста, объясните попопулярнее...
Как создать такой запрос и передать ему входной параметр?

Автор: FINANSIST 14.4.2008, 13:50
Так копировать или переместить?
И что именно, только выбранное значение в листбоксе, или всю запись ( а может быть все записи) с полным набором аналитик, имеющим в качестве отборочного признака значение листбокс??? 

Автор: DelphianOracle 16.4.2008, 12:22
Копировать, а затем изменить и то что копировалось, и то, что получилось. И всю запись.
у меня примерно вот что:
гвозди | 21 шт | что-нить еще...
нажимаю кнопку "списать" например, 10 шт. Должно получиться:
гвозди | 11 шт | что-нить еще...
И в другой таблице
гвозди | 10 шт | что-нить еще...
Я сделал копирование через запрос на добавление. Теперь мне надо разобраться с количеством...
Если можно, помогите...

Автор: Akina 17.4.2008, 08:16
Цитата(DelphianOracle @  16.4.2008,  13:22 Найти цитируемый пост)
Теперь мне надо разобраться с количеством

Сделайте еще и запрос на обновление.

Автор: DelphianOracle 19.4.2008, 13:37
Запрос на обновление... на обновление чего?
Добавленая запись будет последней, но как узнать ее номер?
А можно как-нибудь напрямую из VBA обратиться к таблице для изменения?
И, кстати, можно ли как-нибудь объявить переменную, которая виделась бы из построителя выражений для запросов?

Автор: Palarm 22.4.2008, 15:42
Цитата
И, кстати, можно ли как-нибудь объявить переменную, которая виделась бы из построителя выражений для запросов?

В сохраненном запросе нельзя ссылаться на переменную, но можно ссылаться на функцию, возвращающую результат. Для этого она должна находиться в общем модуле. Тогда в конструкторе запросов можно подставить вызов функции (она станет там видна в списке «Функции»). То есть:

WHERE Таблица _1.Поле_1= myFun()

Если запрос собирается в VBA, то аналогично ссылке на поле формы в условиях отбора прописать ссылку на переменную.

"WHERE Таблица _1.Поле_1=" & myVar

если переменная текстовая, тогда нужно оградить ее одинарными апострофами

"WHERE Таблица _1.Поле_1='" & myVar & "'"

Автор: bopoha 23.4.2008, 19:41
Я бы формировал бы запрос с параметрами, так надежней и сопровождаемо. Или накрайний случай запрос в коде:

CurrentDb.Execute "INSERT INTO  .... SELECT  ... FROM .... WHERE ..."
CurrentDb.Execute "UPDATE .... SET .... WHERE .. "

Автор: DelphianOracle 24.4.2008, 12:01
Я сделал все на VBA, через Connection и Recordset. С запросами так и не разобрался ;). В любом случае задача решена, тему можно закрывать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)