关于 clientdataset/ado 的事件
在 BeforePost 是检查 数据集中(未保存到数据库)性别为‘男’的数量 大于10的时候 提示 不能增加
代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
cdsmx.BeforePost:=BeforePost;
end;
procedure TForm1.BeforePost(DataSet: TDataSet);
var
aEn:TDataSetNotifyEvent;
begin
cdsMx.BeforePost:=nil;
CheckNum;
cdsmx.BeforePost:=BeforePost;
end;
function TForm1.CheckNum: string;
var
cds1:TClientDataSet;
begin
cds1:=TClientDataSet.Create(nil);
try
cds1.Data:=cdsMx.Data;
cds1.Filtered:=False;
cds1.Filter:='PersonSex = '+QuotedStr('男')';
cds1.Filtered:=True;
if cds1.RecordCount>Count then
begin
Showmessage('***');
cdsMx.Cancel;
Abort;
end;
finally
FreeAndNil(cds1);
end;
end;
问题:数据会多生成一行
比如:编号 姓名 性别 爱好
01 XX 女 XX
提交后 变成俩行
这是什么原因!! 还有更简单的方法吗?
[解决办法]
猜测可能是在过滤时,就已经保存了一次,而且当前还有一条记录在修改,最后保存时,就成了两条。这是我的猜想,不一定对。
在我之前写程序时,通常都是从数据库里再查一次,判断一下。
[解决办法]
应该是先出发了ado的beforepost,然后你有调用了 TForm1.BeforePost