cxgrid中修改(200)

  • 主题发起人 主题发起人 jialiguo
  • 开始时间 开始时间
J

jialiguo

Unregistered / Unconfirmed
GUEST, unregistred user!
3层在cxgrid中增加、修改操作。是在修改了好多条记录后用TClientDataSet进行保存的。想控制下名称不能重复procedure TfrmZbry.cdsBeforePost(DataSet: TDataSet);begin //重名 if cds.Locate('用户姓名',Grid.DataController.GetItemByFieldName('用户姓名').EditValue,[]) then begin Application.MessageBox('姓名重复,请您换个名字!','提示',64); Abort; end;end;但一用Locate又触发了post,所以不行。有什么解决的办法?请高手指教下,谢谢了
 
用全局变量控制是否有记录编辑,然后在post的时候检测全局变量来控制是否进行相关操作。
 
to sung_001,不太明白你的意思,你是说把所有的名字都写在一个全局变量中吗?(这是我原本的想法,可感觉太不好)
 
全局变量记录是否进入过编辑状态,在view的onediting事件中对全局变量设为true,表明为编辑过的。然后在你上面的代码外面加一个判断。
 
procedure TfrmZbry.cdsBeforePost(DataSet: TDataSet);begin //重名 if cds.Locate('用户姓名',Grid.DataController.GetItemByFieldName('用户姓名').EditValue,[]) then begin Application.MessageBox('姓名重复,请您换个名字!','提示',64); cds.cancel; Abort; end;end;
 
to sung_001,我是想在gird中他想换行之前判断而组织他换行.我上面的代码是错的,不能那么写,那么写是死循环哦我想另外弄个cds1.data := cds.date,在Locate我想应该可以
 
我给你的代码你不试试?我试过了,正常,
 
给姓名加个唯一索引,提交的时候重名会抛出异常,适当处理就是了
 
1、先用Clone將數據集體里面數據克隆出來 Cds_Temp2、在名字的OnValidate時間中,檢查Cds_Temp中是否有, 有就重復,沒有就過。easy
 
可将“姓名”设为主键,若输入重复记录在提交时except截获出错信息,若为重复记录信息则输出提示信息。
 
to fsse4000,clientdataset1.Clone我没找到啊,是什么属性。OnValidate是字段里的事件,好像连接oracle和sql建立字段的时候会出问题,我就没再cds中加过字段。我的问题主要是在换行上,我决定在post后cdsTemp.date := cds.data;在post前判断下,要有重名的话就 abort不叫他换行。别人还有什么意见没?
 
clientdataset1.Clone方法没有,有下面的方法clientdataset1.appenddata(clientdataset2,true);
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
787
DelphiTeacher的专栏
D
S
回复
0
查看
908
SUNSTONE的Delphi笔记
S
D
回复
0
查看
878
DelphiTeacher的专栏
D
后退
顶部