Цитата:
Сообщение от kaakaa
DataSet который связан с lookup компонентом должен быть в одной транзакции с изменяемым набором данных.
После внесения изменений, lookup набор данных нужно обновить.
PS
Трогать уровень изоляции транзакций не рекомендую.
|
Функция вызова модальной формы и открытия транзацкии у меня реализована вот так (и видимо здесь нарушение):
Код:
procedure TFormMain.dxBarButton4Click(Sender: TObject);
begin
BillsView.BeginUpdate;
with TFormBillAdd.Create(Application) do
try
Connection.BeginTrans;
if BillAddShow(ActiveUserID, Connection) then
begin
Connection.CommitTrans;
aBills.Requery;
end
else
Connection.RollbackTrans;
finally
Free;
end;
BillsView.EndUpdate;
end;
Сначала создаётся форма, потом открывается транзакция, но прикрепление ДатаСета к Connection (TADOCOnnection) идёт после открытия в методе BillAddShow
Код:
function TFormBillAdd.BillAddShow(aUser: Integer;
iConnection: TADOConnection): Boolean;
begin
// ...
aEntities.Connection := iConnection;
// ...
Result := ShowModal = mrOK;
end;
В целом не обращал внимания на это до появления вышеописанной ошибки, т.к. даже если изменить aEntities, и после откатить транзацкию, то и изменения в aEntities тоже откатываются.
Вообще вопрос решился вчера совершенно случайно (не ту функцию по ctrl+пробел ввёл

) вместо Refresh получил Requery и всё заработало.