powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Синхронизация наборов данных.
9 сообщений из 9, страница 1 из 1
Синхронизация наборов данных.
    #32531969
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходные данные:

1. На форме/фрейме в DBGrid отображается набор данных (используется TpFIBDataSet, но это несущественно).

2. Вызывается для добавления/редактирования специальная форма, которая в отдельной транзакции выполняет добавление/редактирование, результат (в т.ч. новый ID записи при добавлении) возвращается в базовую форму.

3. При успешном обновлении выполняется Refresh текущей (с параметрами транзакций проблем нет: write, nowait, rec_version, read_committed) записи. Все отображается ОК.

Вопрос: как в исходном наборе данных получить доступ к записи, не измененной, а добавленной во внешней транзакции?

Дополнительно:
----------------
- Набор данных может быть достаточно велик, поэтому вызов метода FullRefresh нежелателен;
- CachedUpdates = False.

---------------------------
Подскажите!

Спасибо.
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32532083
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить доступ из одной транзакции в другую? Думаю, никак.
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32532104
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить доступ из одной транзакции в другую? Думаю, никак.

Ну что за глупости... Я же привел параметры транзакции - все подтвержденные в другой транзакции данные читаются...

Вопрос в том, чтобы вставить в буфер набора данных запись, добавленную "вне"...

Ну хорошо, пусть в этой же транзакции, тогда как? Все записи уже отфетчены, но я неожиданно узнаю, что создана еще одна, и я точно знаю значение первичного ключа.

Как, не выполняя .Close/.Open в буфер набора данных добавить новую запись. Более того, я знаю значения всех ее полей.

Как сделать?
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32532257
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В открытой транзакции - никак.

Проще редактировать/добавлять в том-же dataset-е и в другой форме.
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32532292
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще редактировать/добавлять в том-же dataset-е и в другой форме.

Дело в том, что "в другой форме" присутствуют DB-Aware - элементы, которые связаны с полями как первой, так и вспомогательной, другой таблицы. В эту "другую" таблицу добавляются данные логически одновременно, а физически после добавления данных в "первую" (констрейнты, понимаете ли...). Так вот, если делается последовательно два Insert в контексте одной и той транзакции, чтобы был возможен откат всей логической операции. Так вот, если эксцепшн происходит после добавления в "первую" таблицу, то она успешно отображается в гриде, как будто никакого RollBack и не было. Посему выношу редактирование в другой набор данных.
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32532382
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все просто!


Короче - : все делаем в том же набре данных, но на другой форме. В AfterUpdate. Если при повторном Insert случается ексцепшн, то не только Rillback, но и Delete фиктивной записи. При Update, естественно, Refresh вместо Delete.


Всем спасибо, кто не бросил в тоске одинокого!
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32533727
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается "mv" и Малиновский Владимир - одно и тоже лицо. :)
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32533729
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это mv (vm), кажется, мурыжили на ньюсгруппе, чтобы он подписался полным реальным именем. а у нас такого правила нет :)
...
Рейтинг: 0 / 0
Синхронизация наборов данных.
    #32536870
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это mv (vm), кажется, мурыжили на ньюсгруппе, чтобы он подписался полным реальным именем. а у нас такого правила нет :)


Это правда... Как в армии - "люминь" - и все. Нет, чтобы по делу, а то - как зовут, как зовут...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Синхронизация наборов данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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