Процедура DoInactiveState удаляет документ из списка
редактируемых, закрывает все клиентские наборы данных, а также производит откат
транзакции (если она была активна).
procedure TrdmDoc.DoOpen(DocID: Integer);
begin
if DocID = 0 then Exit;
try
if not RegisterDoc(DocID) then
raise Exception.Create('Документ редактируется');
FDocID := DocID; // и только здесь, иначе DoInactiveState удалит документ
ibdDocs.Connected := True;
ibtDoc.StartTransaction;
with cdsTitle do
begin
params.paramByName('DocID').AsInteger := FDocID;
Active := True;
if BOF and EOF then
raise Exception.Create('Документ не найден');
end;
with cdsBody do
begin
params.paramByName('DocID').AsInteger := FDocID;
Active := True;
end;
Рекомендуем скачать другие рефераты по теме: зимнее сочинение, шпаргалки по уголовному.