powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireBird DAC: FibPlus => FireDac
5 сообщений из 5, страница 1 из 1
FireBird DAC: FibPlus => FireDac
    #39771935
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расскажите, кто перебрался. С подробностями.
...
Рейтинг: 0 / 0
FireBird DAC: FibPlus => FireDac
    #39771955
RackotPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фэйтл Эра, расскажу о своём опыте, писал отдельное приложение, от того, что выпускает компания и там дали свободу полёта выбрал XE + Firedac. Сконектился всё ок, транзакции прикрутил, прекрасно, но

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
  with qEventEdit do
  begin
    Transaction.StartTransaction;
    try
      ParamByName('AOPERATION').Value := 1;
      ParamByName('ID').Value := dsEvents.DataSet.FieldByName('ID').Value;
      ParamByName('ID_DOCUMENT').Value := dsEvents.DataSet.FieldByName('ID_DOCUMENT').Value;
      ParamByName('KIND').Value := dsEvents.DataSet.FieldByName('KIND').Value;
      ParamByName('TIME$EVENT').Value := dsEvents.DataSet.FieldByName('TIME$EVENT').Value;
      ParamByName('TIME$LAST_SEND').Value := dsEvents.DataSet.FieldByName('TIME$LAST_SEND').AsDateTime;
      ParamByName('SEND$RESULT').Value := dsEvents.DataSet.FieldByName('SEND$RESULT').Value;
      ParamByName('IS_SENDED').Value := Abs(Integer(dsEvents.DataSet.FieldByName('IS_SENDED').AsInteger));
      ParamByName('SEND$COUNTER').Value := dsEvents.DataSet.FieldByName('SEND$COUNTER').Value;
      ParamByName('STATE').Value := 0;
      Open;
      Refresh;//обязательно для записи нового значения

      Result := FieldByName('OUT_ID').Value;
      outError := FieldByName('OUT_ERROR').AsInteger;

      if (outError = 0) then
        UpdateTransaction.Commit
      else
        Transaction.Rollback;
    except
      Transaction.Rollback;
    end;
  end;



Собственно, столкнулся с проблемой когда, при первой итерации все изменения пишутся, а при последующих нет, помог, refresh. Судя по всему там имеется какой-то cash, думаю, люди пишущие каждый день с использованием FireDac более детально опишут эту ситуацию.

Да и в принципе пообщавшись с программистами, понял, что уходят от fib т.к. не поддерживаются, дабы не получить ситуацию, как сейчас на рынке с delphi 7.
...
Рейтинг: 0 / 0
FireBird DAC: FibPlus => FireDac
    #39771956
RackotPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поясню, данная ситуация встречается только с хранимыми процедурами, которые вызваны конструкцией
Код: sql
1.
2.
3.
4.
select
  out_id,
  out_error
from procedure


И при первом вызове все изменения в таблицу приходят, а при последующих итерациях нет. Требуется refresh
...
Рейтинг: 0 / 0
FireBird DAC: FibPlus => FireDac
    #39772003
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RackotPro,

Поставь после забора значений выходных параметров Close и убери Refresh, посмотрим что будет.
P.S. И тебе про это, кажется уже говорили.
...
Рейтинг: 0 / 0
FireBird DAC: FibPlus => FireDac
    #39772390
RackotPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad F, только сейчас дошло какой я критин =);
Собственно, такая история лично у меня возникла, т.к. каждый день пишу на Delphi 7 и там для fibQuery это не требуется, т.к. и дата сета там нет, а у FDQuery там отдельно dataset подключается. И всё это время писал, без проверки
Код: pascal
1.
2.
if Active then
  Close;


И там это работало, поэтому наверно у меня и случился когнитивный диссонанс, но однако странно, то что это только с select.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireBird DAC: FibPlus => FireDac
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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