| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 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. С запросами так и не разобрался ;). В любом случае задача решена, тему можно закрывать. |