|
копирование записей
|
|||
---|---|---|---|
#18+
Всем добрый день, прошу помочь начинающему. Есть запрос (источник-таблица из другого файла), информацию из которого должна скопироваться в таблицу. Копирую с использованием CurrentDb.Execute "INSERT INTO..." Все копируется нормально, новые появившиеся записи в запросе тоже все копируются. Но если запись в источнике редактируется, то после повторного копирования никаких изменений в скопированных записях не производится. Скажите пожалуйста, как сделать чтобы записи менялись?(первичный ключ записей код репликации) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 10:17 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Владимир_52Всем добрый день, прошу помочь начинающему. Есть запрос (источник-таблица из другого файла), информацию из которого должна скопироваться в таблицу. Копирую с использованием CurrentDb.Execute "INSERT INTO..." Все копируется нормально, новые появившиеся записи в запросе тоже все копируются. Но если запись в источнике редактируется, то после повторного копирования никаких изменений в скопированных записях не производится. Скажите пожалуйста, как сделать чтобы записи менялись?(первичный ключ записей код репликации) Для начала, сделайте такое: Код: vbnet 1.
так при ошибке выполнения запроса сообщение вам напишут почитайте, может намек поймете ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 10:36 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Поменянные записи надо обновлять апдейтами а не инсертами. При синхронизации надо 1. Удалить записи, корторые были удалены в репликации 2. Добавить новые записи, которые появились в репликации 3. Обновить измененные в репликации записи Другой кейс - все нафик грохнуть и залить все целиком из репликации У вас пока есть только добавление. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 10:45 |
|
копирование записей
|
|||
---|---|---|---|
#18+
непоймучка, в этом случае ошибка возникает из-за повторяющейся записи. А вот как ее теперь исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 12:09 |
|
копирование записей
|
|||
---|---|---|---|
#18+
П-ЛПоменянные записи надо обновлять апдейтами а не инсертами. При синхронизации надо 1. Удалить записи, корторые были удалены в репликации 2. Добавить новые записи, которые появились в репликации 3. Обновить измененные в репликации записи Другой кейс - все нафик грохнуть и залить все целиком из репликации У вас пока есть только добавление. вот третий пункт меня и интересует. Как сделать не только добавление, но и изменение имеющихся? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 12:11 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Владимир_52непоймучка, в этом случае ошибка возникает из-за повторяющейся записи. А вот как ее теперь исправить?выше П-Л все уже описал. INSERT - это запрос на добавление записей. Запись с уже существующим ключем (повторно) добавить нельзя - ключ уникален, отсюда ваша ошибка. Существующие записи в приемнике нужно ОБНОВЛЯТЬ - см. запрос типа UPDATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 12:15 |
|
копирование записей
|
|||
---|---|---|---|
#18+
А не проще ли будет таблицу прилинковать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 07:46 |
|
копирование записей
|
|||
---|---|---|---|
#18+
непоймучкаВладимир_52непоймучка, в этом случае ошибка возникает из-за повторяющейся записи. А вот как ее теперь исправить?выше П-Л все уже описал. INSERT - это запрос на добавление записей. Запись с уже существующим ключем (повторно) добавить нельзя - ключ уникален, отсюда ваша ошибка. Существующие записи в приемнике нужно ОБНОВЛЯТЬ - см. запрос типа UPDATE. т.е. сначала нужно выполнить запрос update, а потом запрос insert? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 09:07 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 09:39 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Владимир_52Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса.для таблиц с полями f0, f1, f2 (причем f0 - поле ключа): Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 10:14 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Владимир_52непоймучкапропущено... выше П-Л все уже описал. INSERT - это запрос на добавление записей. Запись с уже существующим ключем (повторно) добавить нельзя - ключ уникален, отсюда ваша ошибка. Существующие записи в приемнике нужно ОБНОВЛЯТЬ - см. запрос типа UPDATE. т.е. сначала нужно выполнить запрос update, а потом запрос insert?Да. Чтобы сделать INSERT только тех записей, которых еще нет в приемнике, можно выбрать их, например, связав источник с приемником по LEFT JOIN с отбором по условию Приемник.Ключ IS NULL: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 10:34 |
|
копирование записей
|
|||
---|---|---|---|
#18+
непоймучкаВладимир_52Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса.для таблиц с полями f0, f1, f2 (причем f0 - поле ключа): Код: sql 1. 2.
Спасибо. Скажите пожалуйста, что делаю не правильно, когда в строку вставляю переменную-текст запроса таблицы источника? CurrentDb.Execute "UPDATE [ТфблицаПриемник] AS dst INNER JOIN " & TextZapr & " AS src ON..... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 15:14 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Владимир_52Спасибо. Скажите пожалуйста, что делаю не правильно, когда в строку вставляю переменную-текст запроса таблицы источника? CurrentDb.Execute "UPDATE [ТфблицаПриемник] AS dst INNER JOIN " & TextZapr & " AS src ON..... если в TextZapr у вас - реально sql-текст некоторого select-запроса, то его дополнительно надо обернуть в круглые скобки вообще для отладки запросов, собранных в коде vb рекомендую делать так: Код: vbnet 1. 2. 3.
на строке Execute сделать точку останова и посмотреть в окне отладки значение переменной sql если сами не поймете, что не так - покажите этот текст тут ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 16:20 |
|
копирование записей
|
|||
---|---|---|---|
#18+
непоймучка, спасибо, буду пробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 17:29 |
|
копирование записей
|
|||
---|---|---|---|
#18+
непоймучка, скажите, два последовательных запроса (сначала обновление потом добавление) никаких подводных камней не содержат? (полная синхронизация баз не нужна, т.е. вопрос удаления не актуален) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 07:36 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Владимир_52, почитай ещё про транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 09:06 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Владимир_52непоймучка, скажите, два последовательных запроса (сначала обновление потом добавление) никаких подводных камней не содержат?Ну запросы на изменение данных всегда выполняются последовательно. Что вообще вы называете "подводным камнем" в данном контексте? Неадекватность результата цепочки (правильно написанных) запросов может возникнуть, когда последующие запросы ориентированы на обработку результата предыдущих запросов, и при этом происходит какая-то run-time ошибка на этапе выполнения одного из запросов. Но во-первых, вы можете отловить такую ошибку в своем коде и должным образом обработать ее. Например, существует механизм транзакций, который позволяет при любой незвершенной (например, из-за ошибки) операции вернуть все измененные до этого данные в исходное состояние. А во-вторых, конкретно ваша цепочка состоит из запросов, которые никак не связаны друг с другом - каждый из них обрабатывает данные, которые НЕ затрагивает другой запрос. Это вобщем-то не цепочка некой последовательной обработки, это просто два независимых запроса, каждый из которых выполняет самодостаточную задачу, которая вполне имеет право на отдельное выполнение, и которые могут быть разнесены по времени. Кроме того, ваши два запроса могут быть выполнены многократно с тем же самым итогом, т.е. при непредвиденной ошибке выполнения одного из запросов, его можно просто повторить. Да и смена очередности выполнения этих запросов тоже не особо критична - если вы сделаете сначала добавление, а потом обновление, то второй запрос просто сделает лишнюю работу (обновит только что добавленные записи), но итоговый результат при этом все равно будет правильным. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 09:21 |
|
копирование записей
|
|||
---|---|---|---|
#18+
непоймучка, непоймучкаВладимир_52Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса.для таблиц с полями f0, f1, f2 (причем f0 - поле ключа): Код: sql 1. 2.
А есть возможность какая-то не перечислять все поля в запросе? Прошу прощения за тупизм и некропостинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 19:02 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Aiso4ka, Георгий_ТаренА не проще ли будет таблицу прилинковать?В этом топике раньше ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 19:36 |
|
копирование записей
|
|||
---|---|---|---|
#18+
sdku, не проще, так как данные собираются их трех таблиц, а потом общая таблица связана еще с десятком. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2019, 11:53 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Ну и собирайте хоть из сотни. Добавляйте рекордсетом и Update ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2019, 12:36 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Добрый день!!!. Не хочу создавать новую тему, решил написать сюда. Есть таблица, а в ней пока 111 записей. есть форма (фрагмент этой формы на рисунке) на ней кнопка копирования записей в таблице, по сути идет их дублирование но с другой датой. код программы на нажатие кнопки такой ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:42 |
|
копирование записей
|
|||
---|---|---|---|
#18+
Код: vbnet 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.
рисунок начальной таблицы (см. рис. tabl1.jpg) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:44 |
|
|
start [/forum/topic.php?fid=45&msg=38905066&tid=1610348]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 370ms |
total: | 528ms |
0 / 0 |