powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Где и как управлять транзакциями в TRemoteDataModule?
5 сообщений из 5, страница 1 из 1
Где и как управлять транзакциями в TRemoteDataModule?
    #32135644
Cherruty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где и как управлять транзакциями в TRemoteDataModule?
В help написано, что все с каждой записью перед сохранением можно работать в событии OnBeforeUpdateRecord компонета DataSetProvider после чего
выполнить
Applied := true; и данные сохраняться на сервере.
На самом деле получается у меня, что сохраняются данные только когда обновления делаются через UpdateSQL и BeforeUpdateRecord ничего не обрабатывается. Вообще если в указанном событии хоть что-то написано, то данные не сохраняются совсем. А для моей задачи недостаточно выполнения всего одного Sql запроса, который позволяет UpdateSQL.
Есть ли у кого примеры или хорошие пояснения, тк лит-ры достаточно информативной очень мало.
...
Рейтинг: 0 / 0
Где и как управлять транзакциями в TRemoteDataModule?
    #32135674
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где и как управлять транзакциями в TRemoteDataModule?
- там же, где ими управляют в TDataModule

А вот хелп читать надо внимательнее - там написано, что если в обработчике OnBeforeUpdateRecord вы применили данные, то надо установить applied = true, чтобы провайдер не пытался сам повторно их вкачать в базу. Применяется, кстати, довольно редко.
...
Рейтинг: 0 / 0
Где и как управлять транзакциями в TRemoteDataModule?
    #32135709
Cherruty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу, Пожалуйста, опишите в какой последовательности и в каких событиях,
ведь все таки отличия есть.
...
Рейтинг: 0 / 0
Где и как управлять транзакциями в TRemoteDataModule?
    #32135750
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для этого хотелось бы знать способ доступа к IB, одно дело - BDE, другое - IBX и ADO.
Как правило, у провайдера ставится флаг ResolveToDataset=false и в этом случае провайдер пытается сам формировать запросы к базе данных. Транзакции тоже он открывает и закрывает как надо, правило простое - нет транзакции, откроет, сделает, закроет. Транзакция уже открыта - закрывать не будет.
BeforeUpdateRecord пишут либо когда нужно модифицировать запись, либо когда хотят сами сохранить данные в базе.
А вот событие AfterApplyUpdates - последнее, в нем и можно посмотреть, висит транзакция или нет.
Кстати, необновляемые запросы можно редактировать с помошью провайдера, ему только нужно знать имя таблицы - указывается в OnGetTableName, и выставить ProviderFlags у полей. Все просто и никакого UpdateSQL не требуется.
Насчет литературы - ее вполне достаточно, вот только на русском, навскидку:
http://www.delphimaster.ru/articles/midas/index.html
http://www.delphimaster.ru/articles/midas2/index.html
http://rsdn.ru/article/default.asp?db/midas.xml
http://rsdn.ru/article/default.asp?db/midas_briefcase.xml
http://rsdn.ru/article/default.asp?db/midas_migration.xml
http://rsdn.ru/article/default.asp?db/callback.xml
...
Рейтинг: 0 / 0
Где и как управлять транзакциями в TRemoteDataModule?
    #32138623
Cherruty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Roman Ignatiev ! у меня такая ситуация, что помощь провайдера врядли мне пригодится, когда он все сам делает, и мне придется написать все самой. После усиленного изучения предложенных вами статей, остается открытым для меня вопрос как все же сделать самой в своей транзакции, а не автомаческими способами, тк много проверок надо сделать перед вставкой данных в БД. Соединение у меня через BDE.
В BeforeUpdateRecord на вставке я должна генерировать свой ID, и сделать все обновления в других местах и только после этого окончательно вставлять.
Переназначить я его в этом событии для конкретной записи у не могу, тк вознивает ошибка редактирования. Обновления в одной транзакции не проходят, если в одну вставилось с ошибкой, то откат не происходит.
Уже совсем голову свою несчастную поломала, как же все это делать по-человечески?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Где и как управлять транзакциями в TRemoteDataModule?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]