powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разделенные транзакции в FibPlus 5
11 сообщений из 11, страница 1 из 1
Разделенные транзакции в FibPlus 5
    #32607601
Shmelik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые знатоки! Программирую недавно, помогите разобраться.

FB 1.5 FR
Delphi 7
FibPlus 5.3.0

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT K.ID, K.NUMBER, K.DATE, K.SUMMA, K.S_0, K.S_1,
 S0.SUB_ID         ID_0,
 S0.SUB_NAME NAME_0,
 S1.SUB_ID         ID_1,
 S1.SUB_NAME NAME_1
FROM KASSA K
  LEFT OUTER JOIN SUBKONTO S0 ON (K.S_0 = S0.ID)
  LEFT OUTER JOIN SUBKONTO S1 ON (K.S_1 = S1.ID)

Датасет-
TpFibDataSet
AutoCommit=False
poStartTransaction=True

Если датасет использует одну транзакцию на чтение и на запись, то в режиме выполнения программы:
Изменяю значение поля, например, K.S_0, K.S_0:=34;
Применяю метод Post :DataSet.Post;
Данные из связанной таблицы на форме обновляются
Далее при закрытии формы подтверждаю или отменяю изменения Transaction.Commit. И все хорошо.

Если использую разделенные транзакции, т.е. ReadTransaction и WriteTransaction, то измененные данные могу увидеть только после DataSet.Post, WriteTransaction.CommitRetaining и DataSet.Refresh.
Помогите сделать так, чтобы данные из связанных таблиц отображались при изменениях до подтверждения изменений данных. Или не нужно применять разделенные транзакции? Тогда для чего эта возможность в FibPlus?
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32607851
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В IB ты никак не сможешь увидить "грязные" данные, т.е. прочитать данные, которые были изме6нены и не подтверждены другой транзакцией.
По поводу раздельных транзакций - там много преимуществ. Зайди на их сайт и поищи статьи. У меня инет тормозит - суда еле зашёл, поэтому сылку найтине могу...
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32607915
Shmelik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Gold]В IB ты никак не сможешь увидить "грязные" данные, т.е. прочитать данные, которые были изме6нены и не подтверждены другой транзакцией.[quot]

Ну, конечно же! Спасибо, Gold, и пардон за тупость.
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608070
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataSet.Post, WriteTransaction.CommitRetaining и DataSet.Refresh.

Ну, раз у тебя отдельная транзакция для Write, вместо WriteTransaction.CommitRetaining делай просто WriteTransaction.Commit. Чего курсоры клонировать-то без надобности?
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608078
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvНу, раз у тебя отдельная транзакция для Write, вместо WriteTransaction.CommitRetaining делай просто WriteTransaction.Commit. Чего курсоры клонировать-то без надобности ? Переведи.
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608138
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего не так? Я имел в виду реализацию всяких там xxxRetaining. Хоть тресни, физически реализовано-то так, что всегда выполняется обычный Commit (или Rollback), потом повторно выполняется переоткрытие текущего запроса. Ну, на кой ляд восстанавливать его состояние во Write транзакции, если перечитывает он данные в отдельной, Read - транзакции?

По поводу:
Помогите сделать так, чтобы данные из связанных таблиц отображались при изменениях до подтверждения изменений данных.

- нельзя. Для немедленного отображения задай датасету опциию RefreshAfterPost, а в обработчики AfterPost и AfterDelete добавь:

Код: plaintext
1.
2.
  if (DataSet as TpFIBDataSet).UpdateTransaction.InTransaction then
    (DataSet as TpFIBDataSet).UpdateTransaction.Commit;
// и, если хочешь -   DataSet.Refresh; - чтобы "сразу" все видеть

Чтобы видеть возможные изменения в других записях (ну, там, григгерами что-нибуди намахал), вместо .Refresh используй .FullRefresh (эта штука классная, конечно, но не злоупотребляй ею - считай, это рефрешь каждой записи).
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608154
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvЧего не так? Я имел в виду реализацию всяких там xxxRetaining. Хоть тресни, физически реализовано-то так, что всегда выполняется обычный Commit (или Rollback), потом повторно выполняется переоткрытие текущего запроса .
Фантазии и домыслы.
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608175
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну-ну.
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608311
Shmelik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз спасибо всем за советы и мнения. Остановился на использовании одной транзакции- и пишущей и читающей. Тогда еще вопрос: как узнать, был ли Commit? Ведь получается, что состояние транзакции всега InTransaction?
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608336
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подпишись на сообщения, которые будут, например, триггеры генерировать при изменении данных. Они (сообщения) станут доступны только после Commit транзакции, где сообщения были сгенерированы..
...
Рейтинг: 0 / 0
Разделенные транзакции в FibPlus 5
    #32608365
Shmelik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvПодпишись на сообщения, которые будут, например, триггеры генерировать при изменении данных. Они (сообщения) станут доступны только после Commit транзакции, где сообщения были сгенерированы..

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


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