参考,仅仅是参考
procedure TMainForm.DataSetBroker1AfterPost(DataSet: TDataSet);
var
nId : Integer;
sId : WideString;
begin
DataSetBroker1.AfterPost := nil;
with dATAsETbROKER1 do
begin
sId := DataSet.FieldByName('YQID').Text;
nId := DataSet.FieldByName('ZD').AsInteger;
while not DataSet.Eof do
begin
if (sId <> DataSet.FieldByName('YQID').Text)
and (nId < DataSet.FieldByName('ZD').AsInteger) then
begin
Dataset.Edit;
DataSet.FieldByName('ZD').AsInteger := DataSet.FieldByName('ZD').AsInteger + 1;
DataSet.Post;
end;
DataSet.Next;
end;
end;
DataSetBroker1.AfterPost := DataSetBroker1AfterPost;
end;
如果这样的话我有个问题需要搞清楚
就是,循环中应该是检测数据集中的所有数据,与新增记录的两个值对比吧
那么只需要while not DataSet.Eof do 和DataSet.Next;两个控制条件就可以了吗,循环是从什么地方开始的啊
或者说,是否需要把数据集的指向记录的指针挪到第一条记录,如果需要的话该怎么写
谢谢
使用这种方法以后,运行的时候按保存按钮,直接异常中止了
代码:
procedure TXLXX.DataSetQYLJSJJ2AfterPost(DataSet: TDataSet);
var
nId : Integer;
sId : WideString;
begin
DataSetQYLJSJJ2.AfterPost := nil;
with DataSetQYLJSJJ2 do
begin
sId := DataSet.FieldByName('QYLJID').Text;
nId := DataSet.FieldByName('XH').AsInteger;
DataSet.First;
while not DataSet.Eof do
begin
if (sId <> DataSet.FieldByName('QYLJID').Text)
and (nId <= DataSet.FieldByName('XH').AsInteger) then
begin
Dataset.Edit;
DataSet.FieldByName('XH').AsInteger := DataSet.FieldByName('XH').AsInteger + 1;
DataSet.Post;
end;
DataSet.Next;
end;
end;
DataSetQYLJSJJ2.AfterPost := DataSetQYLJSJJ2AfterPost;
procedure TXLXX.DataSetQYLJSJJ2AfterApplyUpdates(Sender: TObject; var OwnerData: object);
begin
DataSetQYLJSJJ2.Refresh;
end;