|
|
|
Где и как управлять транзакциями в TRemoteDataModule?
|
|||
|---|---|---|---|
|
#18+
Где и как управлять транзакциями в TRemoteDataModule? В help написано, что все с каждой записью перед сохранением можно работать в событии OnBeforeUpdateRecord компонета DataSetProvider после чего выполнить Applied := true; и данные сохраняться на сервере. На самом деле получается у меня, что сохраняются данные только когда обновления делаются через UpdateSQL и BeforeUpdateRecord ничего не обрабатывается. Вообще если в указанном событии хоть что-то написано, то данные не сохраняются совсем. А для моей задачи недостаточно выполнения всего одного Sql запроса, который позволяет UpdateSQL. Есть ли у кого примеры или хорошие пояснения, тк лит-ры достаточно информативной очень мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2003, 12:32 |
|
||
|
Где и как управлять транзакциями в TRemoteDataModule?
|
|||
|---|---|---|---|
|
#18+
Где и как управлять транзакциями в TRemoteDataModule? - там же, где ими управляют в TDataModule А вот хелп читать надо внимательнее - там написано, что если в обработчике OnBeforeUpdateRecord вы применили данные, то надо установить applied = true, чтобы провайдер не пытался сам повторно их вкачать в базу. Применяется, кстати, довольно редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2003, 12:51 |
|
||
|
Где и как управлять транзакциями в TRemoteDataModule?
|
|||
|---|---|---|---|
|
#18+
Прошу, Пожалуйста, опишите в какой последовательности и в каких событиях, ведь все таки отличия есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2003, 13:15 |
|
||
|
Где и как управлять транзакциями в TRemoteDataModule?
|
|||
|---|---|---|---|
|
#18+
Для этого хотелось бы знать способ доступа к 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2003, 13:42 |
|
||
|
Где и как управлять транзакциями в TRemoteDataModule?
|
|||
|---|---|---|---|
|
#18+
Уважаемый Roman Ignatiev ! у меня такая ситуация, что помощь провайдера врядли мне пригодится, когда он все сам делает, и мне придется написать все самой. После усиленного изучения предложенных вами статей, остается открытым для меня вопрос как все же сделать самой в своей транзакции, а не автомаческими способами, тк много проверок надо сделать перед вставкой данных в БД. Соединение у меня через BDE. В BeforeUpdateRecord на вставке я должна генерировать свой ID, и сделать все обновления в других местах и только после этого окончательно вставлять. Переназначить я его в этом событии для конкретной записи у не могу, тк вознивает ошибка редактирования. Обновления в одной транзакции не проходят, если в одну вставилось с ошибкой, то откат не происходит. Уже совсем голову свою несчастную поломала, как же все это делать по-человечески? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2003, 13:39 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32135644&tid=1580653]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 311ms |

| 0 / 0 |
