ЧАстые Вопросы и Ответы
Модераторы: kdv, CyberMax
-
Kapacb
- Сообщения: 7
- Зарегистрирован: 10 апр 2008, 00:15
Сообщение
Kapacb » 10 апр 2008, 00:30
Пользую IBQuery + TIBUpdateSQLW и 2 транзакции
Вопрос такой:
есть ли разница между
Код: Выделить всё
trnWrite.StartTransaction;
IBQuery.Insert;
IBQuery.FieldByName('field1').AsInteger := 1;
IBQuery.Post;
trnWrite.Commit;
и
Код: Выделить всё
IBQuery.Insert;
IBQuery.FieldByName('field1').AsInteger := 1; // или показ окошка редактирования
trnWrite.StartTransaction;
IBQuery.Post;
trnWrite.Commit;
?
Не случается ли во втором случае чего-нибудь потустороннего в дебрях IBX?
ЗЫ Почему спрашиваю - в примерах на тему IBX второго варианта не встречал...
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 10 апр 2008, 09:51
второй вариант как-то странно выглядит. я бы его не использовал ни в каком случае.
-
Kapacb
- Сообщения: 7
- Зарегистрирован: 10 апр 2008, 00:15
Сообщение
Kapacb » 10 апр 2008, 11:47
kdv писал(а):второй вариант как-то странно выглядит. я бы его не использовал ни в каком случае.
странно, что при вызове Insert транзакция, присоединенная к IBUpateSQLW, не стартует, а стартует на Post, отсюда и такой странный пример
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 10 апр 2008, 12:00
Kapacb писал(а):kdv писал(а):второй вариант как-то странно выглядит. я бы его не использовал ни в каком случае.
странно, что при вызове Insert транзакция, присоединенная к IBUpateSQLW, не стартует, а стартует на Post, отсюда и такой странный пример
а с чего ты решил, что она стартует на Post, а не тогда, когда явно сказано?
-
Kapacb
- Сообщения: 7
- Зарегистрирован: 10 апр 2008, 00:15
Сообщение
Kapacb » 10 апр 2008, 13:49
stix-s писал(а):а с чего ты решил, что она стартует на Post, а не тогда, когда явно сказано?
... в смысле, если явно не указывать StartTransaction. Вот я и решил, что ее можно стартовать непосредственно перед Post, а до того вызывать всякие окошки с DBEdit и т.д., в которые пользователь долго что-то вбивает
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 10 апр 2008, 14:41
ответ простой - смотришь в IBSQLMonitor, и проверяешь, нет ли левых стартов транзакций в твоем простом куске кода.
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 10 апр 2008, 15:13
Kapacb писал(а):stix-s писал(а):а с чего ты решил, что она стартует на Post, а не тогда, когда явно сказано?
... в смысле, если явно не указывать StartTransaction. Вот я и решил, что ее можно стартовать непосредственно перед Post, а до того вызывать всякие окошки с DBEdit и т.д., в которые пользователь долго что-то вбивает
а я вот наплевал на DBEdit и т.д., использую обычные компоненты, затем по кнопке ГУД стартую транзакцию, Insert или Edit и Commit или Rollback и мне все равно, как долго ползатель заполняет компоненты