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

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
16.07.2004, 12:37:24
    #32607851
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
В IB ты никак не сможешь увидить "грязные" данные, т.е. прочитать данные, которые были изме6нены и не подтверждены другой транзакцией.
По поводу раздельных транзакций - там много преимуществ. Зайди на их сайт и поищи статьи. У меня инет тормозит - суда еле зашёл, поэтому сылку найтине могу...
...
Рейтинг: 0 / 0
16.07.2004, 12:55:15
    #32607915
Shmelik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
[quot Gold]В IB ты никак не сможешь увидить "грязные" данные, т.е. прочитать данные, которые были изме6нены и не подтверждены другой транзакцией.[quot]

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

Ну, раз у тебя отдельная транзакция для Write, вместо WriteTransaction.CommitRetaining делай просто WriteTransaction.Commit. Чего курсоры клонировать-то без надобности?
...
Рейтинг: 0 / 0
16.07.2004, 13:41:07
    #32608078
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
mvНу, раз у тебя отдельная транзакция для Write, вместо WriteTransaction.CommitRetaining делай просто WriteTransaction.Commit. Чего курсоры клонировать-то без надобности ? Переведи.
...
Рейтинг: 0 / 0
16.07.2004, 13:57:53
    #32608138
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
Чего не так? Я имел в виду реализацию всяких там 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
16.07.2004, 14:03:05
    #32608154
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
mvЧего не так? Я имел в виду реализацию всяких там xxxRetaining. Хоть тресни, физически реализовано-то так, что всегда выполняется обычный Commit (или Rollback), потом повторно выполняется переоткрытие текущего запроса .
Фантазии и домыслы.
...
Рейтинг: 0 / 0
16.07.2004, 14:09:06
    #32608175
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
Ну-ну.
...
Рейтинг: 0 / 0
16.07.2004, 14:49:00
    #32608311
Shmelik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
Еще раз спасибо всем за советы и мнения. Остановился на использовании одной транзакции- и пишущей и читающей. Тогда еще вопрос: как узнать, был ли Commit? Ведь получается, что состояние транзакции всега InTransaction?
...
Рейтинг: 0 / 0
16.07.2004, 14:57:44
    #32608336
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
Подпишись на сообщения, которые будут, например, триггеры генерировать при изменении данных. Они (сообщения) станут доступны только после Commit транзакции, где сообщения были сгенерированы..
...
Рейтинг: 0 / 0
16.07.2004, 15:08:00
    #32608365
Shmelik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделенные транзакции в FibPlus 5
mvПодпишись на сообщения, которые будут, например, триггеры генерировать при изменении данных. Они (сообщения) станут доступны только после Commit транзакции, где сообщения были сгенерированы..

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


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