用的是ado+access,用edit输入,用户点击新增,加一空记录,点击保存,则提交入库,但是有一问题,如果点击两次保存按钮,则会出现主键重复报错,我想在adoquery中beforepost事件中写检测,但是程序根本走不到那
procedure TForm4.ADOQuery1BeforePost(DataSet: TDataSet);
var
str1,str2,str3,str4:string; i,j:integer;
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('select ch,jcsj from sbclxx order by sbxh asc');
open;
last;
end;
str1:=adoquery1.FieldByName('ch').AsString;
str2:=edit1.text;
i:=comparestr(str1,str2);
str3:=adoquery1.fieldbyname('jcsj').AsString;
str4:=maskedit1.Text;
j:=comparestr(str3,str4);
if i=0 then//想让i=0 and j=0则报错,不知为什么
begin
showmessage('输入的编号已存在!请重新输入');
abort;
exit;
end;
end;
还请各位大哥指教!
还有个小问题,字符串换行时,该如何写
procedure TForm4.ADOQuery1BeforePost(DataSet: TDataSet);
var
str1,str2,str3,str4:string; i,j:integer;
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('select ch,jcsj from sbclxx order by sbxh asc');
open;
last;
end;
str1:=adoquery1.FieldByName('ch').AsString;
str2:=edit1.text;
i:=comparestr(str1,str2);
str3:=adoquery1.fieldbyname('jcsj').AsString;
str4:=maskedit1.Text;
j:=comparestr(str3,str4);
if i=0 then//想让i=0 and j=0则报错,不知为什么
begin
showmessage('输入的编号已存在!请重新输入');
abort;
exit;
end;
end;
还请各位大哥指教!
还有个小问题,字符串换行时,该如何写
解决方案 »
- 问下delphi中的三层是怎么分的,可以用三层访问Internet上的数据吗?
- 如何把INI文件的内容复制到另一个INI文件里面?
- 请教,一个不得其解的问题,为什么加了一些同样的计算,结果就不一样了???
- TADODataSet 内容在编辑Post后没有立即被保存到.mdb文件,为何?
- 简单问题,但我不会,高手帮忙~!!
- 如何判断出该记录是否已存在?(简便一些的方法)。
- *关于zero-length string
- 哪里有delphi6.0下mssqlserver2000 for dbexpress 的驱动?
- TNMPOP3控件收邮件简单问题!!!
- 图形问题,很急(第19天)!1分+500元人民币!
- 老婆明天生小BABY了,希望大人小孩都平安!
- C/S结构,用ADO,如果将现机器上SERVER上的SQL数据库擙到另一台SERVER上?
ch这个字段就不能保证是最大的了吧
我建议你还是利用条件查许来实现吧
sql.add('select Count(*) as Totalfrom sbclxx order by sbxh asc where ch=:ch and jcsj=:jcsj');
parameters.parambyname('ch').value:=tirm(edit1.text);
parameters.ParambyName('jcsj').value:=Trim(maskedit1.Text);
Open;
If FieldByName('Total').AsInteger>0 then
begin
showmessage('输入的编号已存在!请重新输入');
abort;
end;
比如'kdkkfdk+kdk+#10+#13+uereruei+kdfk'
execsql后就直接提交了
各位大哥,帮帮忙啊
begin
try
post;
except showmessage('主建重复');
end;
end;
try
//insert.....
except
begin
shomessage('error');
exit;
end
showmessage('ok');这是主要的代码,你要改成你所要的就行了,测试时是先编译一次,然后打开项目文件夹,运行可执行文件.EXE