原来的代码我已经注释掉了,都用{}括起来了
现在改后的代码就是我在20楼里面贴的那些
另外,我把您说的afterPost里面的方法写到BeforePost里面去,aterPost里面的注释掉,试验一下,新增节点然后保存的时候跟我报:Dataset not in edit or insert mode,具体见图,但是+1功能正常了,只是不能保存数据。如果在关闭功能的时候选择保存数据,则又是20楼的那个错误
嗯,我刚加上了DataSet.Edit,还是不行呢
请问您那个运行正常的都是怎么改的方法,是写在beforePost里面还是afterPost?有没有加DataSet.Edi这句?
现在我的是:
procedure TXLXX.DataSetQYLJSJJ2BeforePost(DataSet: TDataSet);
var
nId : Integer;
sId : WideString;
begin
DataSetQYLJSJJ2.BeforePost := 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;
DataSet.Edit;
DataSetQYLJSJJ2.BeforePost := DataSetQYLJSJJ2BeforePost;
end;
procedure TXLXX.DataSetQYLJSJJ2AfterApplyUpdates(Sender: TObject; var OwnerData: object);
begin
//DataSetQYLJSJJ2.ApplyUpdates;
DataSetQYLJSJJ2.Refresh;
end;
我的只有这段,别的没有
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;
DataSet.First; //从第一条开始
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;