Как я могу сделать несколько транзакций в 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;