有数据集一个cdsView ,包含字段: PartCode_ CusSup_
要求 PartCode_ + CusSup_ 可以重复出现在cdsView数据集里面,但是当出现重复数据的时候要提示信息
“PartCode_ + CusSup_ 已存在,请注意!”,只提示信息而已 但数据集操作继续
现存在数据: PartCode_ CusSup_ (未保存到数据库,只在数据集cdsView中)
A001 C001
A002 C001
再对数据集新增一行数据,CuSup_默认等于 C001
对新增的数据行 PartCode_字段进行开窗选择,假设我开窗选择后得到返回值也是 A001
这时我需要检查 是否有重复数据
1.先检查数据库是否存在 A001 + C001 的数据,
通过SQL语句 Select * from 表名 where PartCode_='A001' and CusSup_='C001'
2.再检查当前数据集是否存在 A001 + C001 ,
采用cdsView.Locate('PartCode_;CusSup_', VarArrayOf(['A001', cdsView.FieldByName('CusSup_').AsString]),[])
这时通过定位找到数据集里已存在这条数据,即提示信息:A001 + C001 已存在,请注意!”
然后操作继续,我应该把返回值赋给我刚才操作的行
cdsView.Edit;
cdsView.FieldByName('PartCode_').AsString := 'A001';
这时我却发现cdsView.Edit;所编辑的行不是我刚才操作的那一行了,而是被cdsView.Locate定位到了第一行
不要说把cdsView移动到最后一行,不行! 如果我是在cdsView的中间一行进行开窗的 那么这个做法也是错误的
有没有其他检查数据集数据的办法 能不让数据集当前的指向改变?
求解