以下是我看到的一段代码,根据一个数据集的内容,来产生另外的一些数据,中间用到了事务的控制。
==========================
DataSetBroker2.DataSet.First;
h:=Transaction1.Start(true);
try
begin //事务控制
for i:=1 to DataSetBroker2.DataSet.RecordCount do
begin
。。。 。。。
if i = DataSetBroker2.DataSet.RecordCount then
Dialogs.ShowMessage('凭证已经自动生成!');
end
else
Dialogs.ShowMessage('这里出现错误了!');
DataSetBroker2.DataSet.FieldByName('SFTJ').AsInteger := 1;
DataSetBroker2.DataSet.Next;
end;
DataSetBroker2.DataSet.Next;
end;
Transaction1.Commit(h);
end;//事务控制
except
Transaction1.Rollback(h); //回滚事务,当执行操作失败或提交出错后执行
Dialogs.ShowMessage('数据提交数据库时出错,请您重新提交数据(重新点击自动生成凭证!');
end;
end;
1 滚动数据集来访问数据集中每一条记录,最好先DisableControls;,最后EnableControls。类似:
DataSet.DisableControls;
try
DataSet.First;
while not DataSet.Eof do
begin
//循环处理数据
DataSet.Next;
end;
finally
DataSet.EnableControls;
end;