LEADERSOFT.ru
Разработка на заказ программ и сайтов
Разработка
Заказ программы
Прайс-лист
Техническое задание
Проектная документация
Наши клиенты
Реклама и продвижение
Магазин
Перейти в магазин
Новинки магазина
Бизнес программы
Финансовый учет
Документооборот
Исходные коды
Интернет решения
Обучение
Перейти в раздел
Форумы по разработке
Примеры на Access
Рассылка статей
Магазин IT литературы
Блог
Все статьи
Microsoft Access (VBA)
Microsoft Access (Проекты)
Microsoft ASP.NET
Сервисы Google
Технические задания
Новости IT технологий
Сервисы
Форумы разработчика
Контакты
О компании
Регистрация на сайте
Подписка на новости по Email
Сообщество Google+
Подписка subscribe.ru
Новости в формате Атом
Загрузить
Загрузить каталог программ
Форумы по информационным технологиям
Начало
Forums
Регистрация
|
Вход
Forums
Обновлено ::
06 февраля 2005
Форумы
Поиск
Список форумов
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: дублирова...
Тема: дублирование
15.06.2007 21:09:37
SergeB
3 сообщения
Тема: дублирование
Есть таблицы связанные отношением один ко многим. Ну допустим "счет" и "данные счета". Сделана классическая форма с подчиненной формой в качестве интерфейса. Нужно сделать кнопку "дублировать" при нажатии на которую текущая запись в таблице "счет" повторяется в ней же но с другим уникальным ключом, а также все связанные с ней записи из таблицы "данные счета" дублируются, причем ключ по которому они связаны изменяется, на ключ сдублированной записи. Продублировать запись в осноной таблице легко - это можно сделать на голом VBA и уже работает. А вот продублировать связанные записи в таблице "данные счета" - это вроде задача как раз для SQL. Пока придумал такой вариант. Сделана буферная таблица в нее перекидываются записи из подтаблицы, отобранные по текущей записи основной таблицы. Затем на них делается UPDATE - меняется первичный ключ, на значение для новой записи в основной таблице. Затем хочется сделать INSERT в "данные счета" записей из буферной таблицы. Так вот последний шаг не работает!!! Если более понятно будет на конкретном коде то он примерно такой:
strSQL = "DELETE * FROM bill_list_buffer;"
CurrentDb.Execute (strSQL)
strSQL = "INSERT INTO bill_list_buffer ( key, field1, field2 ) SELECT field1, field2 FROM bill_list WHERE key = " & curRec & ";"
CurrentDb.Execute (strSQL)
strSQL = "UPDATE bill_list_buffer SET key =" & newRec & " WHERE key =" & curRec & ";"
CurrentDb.Execute (strSQL)
strSQL = "INSERT INTO bill_list ( key, field1, field2 ) SELECT key, field1, field2 FROM bill_list_buffer WHERE key =" & newRec & ";"
CurrentDb.Execute (strSQL)
Последние две строки не вставляют записи из буферной таблицы в рабочую!!!
Причем если этот запрос выделить, да загнать в раздел запросов Access, то оттуда он работает! Но когда вызывается в одной подпрограмме с предыдущими ничего не вставляет или не выбирает. Может надо организовать транзакцию, или указать VBA выполни это, а потом будешь выполнять это. Может по умолчанию он их асинхронно выполняет. Теряюсь в догадках, надесь на Вашу помощь. И если кто предложит более элегантное решение, то также спасибо.
P.S. Запросы на добавление
Автор:
SergeB
от 08.08.2005 17:36:22
Источник ...
15.06.2007 21:09:37
All
4316 сообщения
RE: дублирование
Лучше для дублирования написать собственную функцию VBA, используя средства не SQL, а basic (dbs.OpenRecordset ...). Надо открыть 2 источника данных один для чтения, а другой для записи. Буферная таблица не нужна - это лишняя нагрузка на базу данных.
P.S. Запросы на добавление
Автор:
Admin
от 0:00:00
Источник ...
15.06.2007 21:09:37
SergeB
3 сообщения
разобрался
Спасибо за ответ.
Почему не работали последние строки я уже разобрался. Было включено "обеспечение целостности данных", а вставлять из буферной таблицы в основную подтаблицу я пытался до того как вставлял запись в надтаблицу. Вполне корректное поведение когда поймешь почему. :-) Сейчас уже все работает. На счет DAO/ADO подумаю.
P.S. Запросы на добавление
Автор:
SergeB
от 12.09.2005 18:22:39
Источник ...
Страница 1 из 1
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: дублирова...
Одноуровневый вид
Древовидная структура
Самый старый из новых
Новейший из старых
Поиск
Список форумов
Начало
|
Forums
Copyright 2002-2016 Leadersoft.ru
::
Leadersoft
::
Соглашение о безопасности
::
Условия использования