powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDac.Transaction помогите настроить
15 сообщений из 40, страница 2 из 2
FireDac.Transaction помогите настроить
    #39750481
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RackotProVlad F, есть у делфи дебаг... можно посмотреть состояние транзакции после коммита. Сядь да потестируй вон выше код есть. Смысл вот этих бездумных отписок?
- А вы что же, - и жевать за меня будете?!
- Ага!! (с) Вовка в тридевятом царстве.))
P.S. Мне кажется, клиент пропустил про Close() мимо уха.))
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39750490
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RackotProвесь смысл как раз в suspende и в этой процедуре возвращается out_error

Ты не поверишь, но для возврата скаляра SUSPEND не нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39750493
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Замечу, что клиент не откатить не может, а и, всего лишь, повторно обновить. ;)
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39750645
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RackotPro
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TFmTest.Test;
begin
  with qEventEdit do
  begin
    if not Transaction.Active then
      Transaction.StartTransaction;
    try
      ParamByName('NAME').Value := edtName.Text;
      Open;

        Transaction.Commit;
    except
      Transaction.Rollback;
    end;
  end;
end;





Vlad F прав. У вас, в вашей функции на Делфи, после текста:
Код: pascal
1.
2.
3.
 except
      Transaction.Rollback;
    end;


как минимум не хватает CLOSE; чтобы закрыть ваш запрос.
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39750648
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Ну лично я бы поставил его в данном тексте сразу после Open().))
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39750649
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
граждане тунея.. погромисты!
а шо это вы тут дельфи обсуждаете?

зы: направьте уже таки поциента в уютненький к Рустаму.
Posted via ActualForum NNTP Server 1.5

Модератор: Тема перенесена из форума "Firebird, InterBase".
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830011
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похожая ситуация, если коммитить простой инсерт или апдейт - все работает, а если коммитить процедуру - не сохраняет. В чем может быть дело?
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830030
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aford,

Дохтур по фотографии на лечит. (с))
Пример кода давай, когда работает и когда нет.
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830071
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad F,
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
procedure TActivities.SendToDB;
var
  Query: TFDQuery;
  i: Integer;
begin
  Query:= TFDQuery.Create(nil);
  with Query do
  try
    Connection:= FFDB; // TFDConnection
    try
      SQL.Text:= 'Execute procedure Some_proc1(:date_from, :date_to)';
      ParamByName('date_from').AsDate:= FDFrom;
      ParamByName('date_to').AsDate:= FDTo;
      SetTransaction(Query, True);
      ExecSQL;
      Transaction.Commit;
    except
      on E: Exception do
      begin
        Transaction.Rollback;
        SetTransaction(Query, True);
      end;
    end;
 
    SQL.Text:= 'execute procedure some_proc2(:date_id, :user_id)';
    for i:= Low(FArrActivities) to High(FArrActivities) do
      with FArrActivities[i] do
      try
        ParamByName('date_id').AsDate:= DateID;
        ParamByName('user_id').AsString:= UserID;
        SetTransaction(Query, True);
        ExecSQL;
      except
        on E: Exception do
        begin
          Transaction.Rollback;
          SetTransaction(Query, True);
          Continue;
        end;
      end;
    Transaction.Commit;
  // а вот это работает
  with Query do
  begin
    Close;
    SQL.Text:= 'insert into t_some_table (date_id, user_id) values (:date_id, :user_id)';
    ParamByName('date_id').AsDate:= DateID;
    ParamByName('user_id').AsString:= UserID;
    ExecSQL;
    Transaction.Commit;
  end;
end;


Последнюю часть писал на коленке, но принцип думаю ясен. Да, еще вот:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TGIOActivities.SetTransaction(Query: TFDQuery; Write: Boolean);
begin
  with Query do
  begin
    case Write of
      False:
        if Transaction <> FFTRRead then
          Transaction:= FFTRRead;
      True:
        if Transaction <> FFTRWrite then
          Transaction:= FFTRWrite;
    end;
    Transaction.StartTransaction;
  end;
end;
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830124
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aford, экцепшн, если он возникает, то гасится. А ошибки нет.
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830125
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45, я прописывал в эксепте записи в логи, и прям перед ним что все успешно. Все отрабатывает нормально, но не сохраняет в
БДв случае запуска процедуры.
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830127
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в хранимых процедурах простой инсерт или удаление с набором параметров
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830149
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел трассером (trace and audit), в первой процедуре есть коммит - мой косяк, она работает, а во второй нет (вызовы процедуры, параметры, все проходит), хотя в коде он четко прописан после цикла...
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830154
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дебаггером по Transaction.Commit проходит.
Жаль, что на форуме можно только написать сообщение, а не отредактировать
...
Рейтинг: 0 / 0
FireDac.Transaction помогите настроить
    #39830169
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем SetTransaction(Query, True) перед ExecSQL было лишним, надо перед циклом было присваивать, я перезапускал транзакции не коммитя их. Ошибка из-за кривости рук.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDac.Transaction помогите настроить
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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