如果你的字段x,y,z在数据库中设为char而不是varchar,那么它们在数据库中的实际数据是“字符串”+一些空格。加空格的目的是保证总长度等于定义的char长度。可能是这个问题;另外也可能是大小写不一致。 ————————————————————————————————— MaximStr := '宠辱不惊,看庭前花开花落,去留无意; 毁誉由人,望天上云卷云舒,聚散任风。'; if Not Assigned(I) then I := TI.Create(Nil); I.Maxim := MaximStr; I.Desire := '加不加分随你'; —————————————————————————————————
解决啦! 思路:在adotable.insert前,对表建立视图。这样视图中的记录就是没有插入新记录的记录集,对其进行查找即可。 如下:(视图名view_cpkc,字段名如下d_cpkc.ckbm,d_cpkc.hth,d_cpkc.hh,d_cpkc.czdm) //判断数据库中是否已经存在该视图,如 果存在,drop掉 Adoconnection1.Execute('IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = ''view_cpkc'') drop view view_cpkc'); //对d_cpkc中几个关键字段库建立视图 Adoconnection1.Execute('create view view_cpkc as select d_cpkc.ckbm,d_cpkc.hth,d_cpkc.hh,d_cpkc.czdm from d_cpkc'); Adotable1.Insert;在进行post前查找视图中是否有将要添加的记录,既进行唯一性判断,如下: 在adoquery的sql中加入如下语句: select count(*) from view_cpkc where ckbm=:ckbm AND hth=:hth AND hh=:hh AND czdm=:czdm//在button1(确定)加入如下语句,即可: with adoquery1 do begin close; Parameters.ParamByName('ckbm').Value:=ckbm.text; Parameters.ParamByName('hth').Value:=hth.text; Parameters.ParamByName('hh').Value:=hh.text; Parameters.ParamByName('czdm').Value:=czdm.text; open; count:=fields[0].value; end; if count>0 then begin showmessage('仓库中已有该货物,不能进行添加!'); count:=0; abort; end
不要用AdoTable搜索,使用 Adoquery1.sql:='select * from YouTable where x="'+dbeditx.text+'",y="'+dbedity.text+'",z="'+dbeditz.text+'"' Adoquery1.open; found := not Adoquery1.isEmpty; 就OK了.
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Desire := '加不加分随你';
—————————————————————————————————
为了提高效率SQL语句可以这么写!select count(*) from table_name where tiaojian1=1 and tiaojian2=2....
思路:在adotable.insert前,对表建立视图。这样视图中的记录就是没有插入新记录的记录集,对其进行查找即可。
如下:(视图名view_cpkc,字段名如下d_cpkc.ckbm,d_cpkc.hth,d_cpkc.hh,d_cpkc.czdm)
//判断数据库中是否已经存在该视图,如 果存在,drop掉
Adoconnection1.Execute('IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = ''view_cpkc'') drop view view_cpkc');
//对d_cpkc中几个关键字段库建立视图
Adoconnection1.Execute('create view view_cpkc as select d_cpkc.ckbm,d_cpkc.hth,d_cpkc.hh,d_cpkc.czdm from d_cpkc');
Adotable1.Insert;在进行post前查找视图中是否有将要添加的记录,既进行唯一性判断,如下:
在adoquery的sql中加入如下语句:
select count(*) from view_cpkc where ckbm=:ckbm AND hth=:hth AND hh=:hh AND czdm=:czdm//在button1(确定)加入如下语句,即可:
with adoquery1 do begin
close;
Parameters.ParamByName('ckbm').Value:=ckbm.text;
Parameters.ParamByName('hth').Value:=hth.text;
Parameters.ParamByName('hh').Value:=hh.text;
Parameters.ParamByName('czdm').Value:=czdm.text;
open;
count:=fields[0].value;
end;
if count>0 then
begin
showmessage('仓库中已有该货物,不能进行添加!');
count:=0;
abort;
end
Adoquery1.sql:='select * from YouTable where x="'+dbeditx.text+'",y="'+dbedity.text+'",z="'+dbeditz.text+'"'
Adoquery1.open;
found := not Adoquery1.isEmpty;
就OK了.
在插入状态下执行这些语句也没问题吗?