|
|
|
jester7 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 8.12.2015 Репутация: нет Всего: нет |
В скрипте (в файле): "UPDATE OR INSERT INTO ***************************" и т.д. строк примерно 200 Какая-то часть выполнилась, какая-то нет. Видимо от половины и до конца не выполнилось Нашел: Application: Object: "Form1.pFIBScripter1" Operation:TrID=12599960 Error on execute query. Error message: "Form1.pFIBScripter1: Violation of FOREIGN KEY constraint "". Violation of FOREIGN KEY constraint "FK_AKCIANAME_2" on table "AKCIANAME". Foreign key reference target does not exist. добавил, чтоб не останавливалась на ошибке:
но пропускает куски целые. НЕ вписывает в базу. Немного подумали и пришли к выводу, что программа выполняет строки скрипта до тех пор, пока не встретит строку КОММИТА, после этой строки транзакции записываются в базу, а если ошибка происходит до КОММИТА, то транзакция до ошибки не записывается, вот и происходит потеря данных. Вопрос: как сделать, чтоб КОММИТ сам работал, вне зависимости от встретившейся ошибки ??? Может параметры Транзакции выставить иначе ? или есть АУТОКОММИТ ? П.С. временно добавил в файл скрипта "КОММИТ ВОРКИ" после каждой строки ))) - хоть так работает подскажите, как обойти эту ошибку транзакции ? Хотелось бы , чтоб любой файл скрипта программа отрабатывала правильно. |
||||
|
|||||
barmaley4ik |
|
|||
Unregistered |
Не совсем понятно, что требуется. У тебя выбивается ошибка по внешнему ключу... НУ нет у тебя в связанной таблице такого ключа и все тут. Соответственно ошибка.. Данные не вставились. Скрипт отрабатывается правильно. Метод ExecuteFromFile не загружает весь файл в память, а считывает файл построчно. Попробуй pFIBScripter1.Script.LoadFromFile(FileName);
pFIBScripter1.ExecuteScript; Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Akella |
|
|||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Часть скрипта выполняется, потом ошибка и после неё уже не выполняется.
Исправляй ошибку, выясняй откуда ноги растут. А лучше так: открытие транзакции запуск скрипта если ошибка - откат если нет ошибок - подтверждение тогда будет или всё откатываться или всё сохраняться Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Суть транзакции состоит в том, чтобы применить все или не применить ничего. Честно говоря я удивлен, что у вас изменения применяются частично. По идее не должны вовсе применяться. Если нужно чтобы запросы применялись независимо, то завершайте транзакцию после каждого.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |