|
|
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
Исходные данные: 1. На форме/фрейме в DBGrid отображается набор данных (используется TpFIBDataSet, но это несущественно). 2. Вызывается для добавления/редактирования специальная форма, которая в отдельной транзакции выполняет добавление/редактирование, результат (в т.ч. новый ID записи при добавлении) возвращается в базовую форму. 3. При успешном обновлении выполняется Refresh текущей (с параметрами транзакций проблем нет: write, nowait, rec_version, read_committed) записи. Все отображается ОК. Вопрос: как в исходном наборе данных получить доступ к записи, не измененной, а добавленной во внешней транзакции? Дополнительно: ---------------- - Набор данных может быть достаточно велик, поэтому вызов метода FullRefresh нежелателен; - CachedUpdates = False. --------------------------- Подскажите! Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 11:30:27 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
Как получить доступ из одной транзакции в другую? Думаю, никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 12:06:54 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
Как получить доступ из одной транзакции в другую? Думаю, никак. Ну что за глупости... Я же привел параметры транзакции - все подтвержденные в другой транзакции данные читаются... Вопрос в том, чтобы вставить в буфер набора данных запись, добавленную "вне"... Ну хорошо, пусть в этой же транзакции, тогда как? Все записи уже отфетчены, но я неожиданно узнаю, что создана еще одна, и я точно знаю значение первичного ключа. Как, не выполняя .Close/.Open в буфер набора данных добавить новую запись. Более того, я знаю значения всех ее полей. Как сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 12:13:22 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
В открытой транзакции - никак. Проще редактировать/добавлять в том-же dataset-е и в другой форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 13:02:09 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
Проще редактировать/добавлять в том-же dataset-е и в другой форме. Дело в том, что "в другой форме" присутствуют DB-Aware - элементы, которые связаны с полями как первой, так и вспомогательной, другой таблицы. В эту "другую" таблицу добавляются данные логически одновременно, а физически после добавления данных в "первую" (констрейнты, понимаете ли...). Так вот, если делается последовательно два Insert в контексте одной и той транзакции, чтобы был возможен откат всей логической операции. Так вот, если эксцепшн происходит после добавления в "первую" таблицу, то она успешно отображается в гриде, как будто никакого RollBack и не было. Посему выношу редактирование в другой набор данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 13:19:11 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
Все просто! Короче - : все делаем в том же набре данных, но на другой форме. В AfterUpdate. Если при повторном Insert случается ексцепшн, то не только Rillback, но и Delete фиктивной записи. При Update, естественно, Refresh вместо Delete. Всем спасибо, кто не бросил в тоске одинокого! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 13:47:35 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
Оказывается "mv" и Малиновский Владимир - одно и тоже лицо. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 08:31:15 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
это mv (vm), кажется, мурыжили на ньюсгруппе, чтобы он подписался полным реальным именем. а у нас такого правила нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 08:33:36 |
|
||
|
Синхронизация наборов данных.
|
|||
|---|---|---|---|
|
#18+
это mv (vm), кажется, мурыжили на ньюсгруппе, чтобы он подписался полным реальным именем. а у нас такого правила нет :) Это правда... Как в армии - "люминь" - и все. Нет, чтобы по делу, а то - как зовут, как зовут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:50:19 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32533727&tid=1578565]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
179ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 449ms |

| 0 / 0 |
