利用DBNavigater控件如何向DBGrid空间里添加不重复记录
利用DBNavigater控件如何向DBGrid空间里添加不重复记录(我有主键字段的哦),利用代码实现
[解决办法]
这根DBNavigater有啥关系,DBNavigater直观增加一行空记录,你在提交时,自己判断
[解决办法]
额外维护多一个能够判断当前记录重复的列表. 在BeforePost之前, 先用当前正在提交的记录在这个列表里面查询一下是否会有重复, 有的话则调用Cancel和 Abort, 没有的话就通过是了.
像这类检测记录是否有重复的, 用当前数据集做循环是会比较慢的, 维护同步数据集或链表的方式会比较好.
[解决办法]
使用ClientDataSet控件可以在客户端进行查询。
[解决办法]
在ADOQuery或AdoTable中添加静态列,然后选中要检查的字段,在字段的onValidate事件中进行判断,例如检查新输入的值表中是否有:
procedure TForm1.ADOTable1namexValidate(Sender: TField);
var aquery:Tadoquery;
begin
aquery:=Tadoquery.Create(self);
try
aquery.Connection:=self.ADOConnection1;
with aquery do
begin
close;
sql.Clear;
sql.Add('select namex from t1 where namex=:aValue');
parameters.ParamByName('aValue').Value:=sender.Text;
open;
if not isempty then
begin
Showmessage(sender.Text+'已经存在');
abort;
end;
end;
finally
aquery.Free;
end;
end;