|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
Уважаемый форум, Есть Office 365, Access. Есть блок инструкций, которые необходимо выполнить в комплексе, т.е. при сбое одной из них, нужно откатить все предыдущие. Как-то не складывается использовать begin, commit, rolback. Пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Т.е. в примере происходит выполнение инструкции DELETE, затем ошибка при выполнении INSERT, но DELETE не открывается - записи удаляются. Что не так или чего я недопонимаю? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 11:25 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
IFK, Я бы не полагался на авто откаты, делал бы точную копию (как буфер) Table, над ней бы экспериментировал и уже из неё (из копии) заливал конечный результат в Table... Да и всё в целом как-то не логично - если изначально содержимое Table не нужно (ибо удаляется всё под ноль), то зачем его восстанавливать потом? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:21 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
Вы бы показали, что есть объект db , что ли... ADODB.Connection? тогда где adExecuteNoRecords? или оно - что-то ещё? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 14:45 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
IFKКак-то не складывается использовать begin, commit, rolback. Пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Т.е. в примере происходит выполнение инструкции DELETE, затем ошибка при выполнении INSERT, но DELETE не открывается - записи удаляются. 1. У объекта Database нет метода BeginTrans и т.п. Это методы Workspace. 2. В DAO у метода Execute два аргумента (запрос , параметры), а у вас dbFailOnError идет 3-м. Странно, что у вас это вообще работает. ЗЫ. dbSeeChanges с методом Execute никогда не использовал, достаточно dbFailOnError. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 15:10 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
Если внимательно и вдумчиво почитать про транзакции,то Ваша задача довольно просто решается ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 17:13 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
IFKЧто не так или чего я недопонимаю?смотри в FAQ/MS Access/Как запускать запросы из VBA раздел 2.6 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:37 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
IFK, и скобки д..е убери ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:39 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
AkinaВы бы показали, что есть объект db , что ли... ADODB.Connection? тогда где adExecuteNoRecords? или оно - что-то ещё? Да, ADODB.Connection ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 10:54 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
vmagIFK, Я бы не полагался на авто откаты, делал бы точную копию (как буфер) Table, над ней бы экспериментировал и уже из неё (из копии) заливал конечный результат в Table... Да и всё в целом как-то не логично - если изначально содержимое Table не нужно (ибо удаляется всё под ноль), то зачем его восстанавливать потом? Оно не восстанавливается, а перезаписывается с измененными данными. Не хочу возиться с индивидуальными полями для каждой записи - их дохрена и проверять изменилось ли содержимое каждого поля, чтобы потом его проапдейтить - слишком долго и муторно. Проще прибить старую запись и внести ее же, только с актуальными данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 10:56 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
Кривцов АнатолийIFKКак-то не складывается использовать begin, commit, rolback. Пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Т.е. в примере происходит выполнение инструкции DELETE, затем ошибка при выполнении INSERT, но DELETE не открывается - записи удаляются. 1. У объекта Database нет метода BeginTrans и т.п. Это методы Workspace. 2. В DAO у метода Execute два аргумента (запрос , параметры), а у вас dbFailOnError идет 3-м. Странно, что у вас это вообще работает. ЗЫ. dbSeeChanges с методом Execute никогда не использовал, достаточно dbFailOnError. А у меня не DAO, а ADODB. Там есть, судя по интеллисенсу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 10:57 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
ПанургIFK, и скобки д..е убери Какие скобки убрать? Там все скобки на месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 10:58 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
sdkuЕсли внимательно и вдумчиво почитать про транзакции,то Ваша задача довольно просто решается\\ Не поверите, читал и неоднократно, сделал именно так, как написано, но не работает. Выбрасывает по ошибке, но ничего не откатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 11:00 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
ПанургIFKЧто не так или чего я недопонимаю?смотри в FAQ/MS Access/Как запускать запросы из VBA раздел 2.6 Ага, смотрел и даже делал именно так, как там описано - нифига не откатывается, т.е. записи удаляются, вываливается ошибка при выполнении следующей операции, уходит на обработку ошибок, но удаление в обработке ошибок не откатывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 11:10 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
IFKДа, ADODB.Connectionну и нахрена мешать всё в кучу? Объекты ADODB, константы DAO. Наименования объектов тоже от DAO. Трудно сходить по ссылке - 21970695 и там аккуратно переписать? Или уж если хочется для ADO Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 11:13 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
IFKКакие скобки убрать? Там все скобки на месте.От слова "ВСЕ" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 11:14 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
ПанургIFKКакие скобки убрать? Там все скобки на месте.От слова "ВСЕ" А какая разница, со скобками или без? Работает и так и так. Или я чего-то не знаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 11:19 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 11:26 |
|
Как проверить выполнение SQL инструкции перед записью результатов?
|
|||
---|---|---|---|
#18+
ПанургIFKДа, ADODB.Connectionну и нахрена мешать всё в кучу? Объекты ADODB, константы DAO. Наименования объектов тоже от DAO. Трудно сходить по ссылке - 21970695 и там аккуратно переписать? Или уж если хочется для ADO Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 11:27 |
|
|
start [/forum/topic.php?fid=45&msg=39863215&tid=1610473]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 358ms |
total: | 495ms |
0 / 0 |