Как я могу сделать несколько транзакций в DBExpress

Я использую DBExpress с blackfish.

Как я могу сделать несколько транзакций?

У меня есть несколько ГРИДов, все в редактировании одновременно, и все должны быть сохранены сразу. Начальное редактирование и публикация должны определяться конечным пользователем, так как он работает, и в другом месте приложения, поэтому его трудно сделать за одну-единственную транзакцию.

ОБНОВИТЬ:

ОК, проблема в том, что приложение работает в параллельном режиме, и мне нужно как можно быстрее зафиксировать новые данные, чтобы другой пользователь мог получить к ним доступ.

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

1 ответ

Решение

Транзакция работает "perse" над различными наборами данных. Если вы работаете с dbexpress, это даже лучше. Просто позвольте вашему конечному пользователю выполнять все операции редактирования, удаления и публикации по различным сеткам, а когда вам нужно сохранить его работу, сделайте что-то вроде:

var
 mytransaction : TDBXTransaction;
begin
   mytransaction := sqlconnection1.BeginTransaction;
   try
      if clientdataset1.ChangeCount > 0 then clientdataset1.ApplyUpdates(0);
      ...
      if clientdatasetn.ChangeCount > 0 then clientdatasetn.ApplyUpdates(0);
      sqlconnection1.CommitFreeAndNil(mytransaction);
   except
     sqlconnection1.RollbackFreeAndNil(mytransaction);
   end;
end;
Другие вопросы по тегам