我用TTable和TQuery做了两个功能相同的程序,程序操作的数据表有一字段被设计成
不允许重复的,我为了在程序添加数据时添加了重复的字段时提示,分别在两个控件的OnPostError事件插入代码显示错误,但是问题出来了,用TTable做的程序可以显示错误,可是用TQuery做的程序不能显示错误,在TQuery的OnPostErrorr事件插入的相同代码,没有反映!这是为什么?请告知!
不允许重复的,我为了在程序添加数据时添加了重复的字段时提示,分别在两个控件的OnPostError事件插入代码显示错误,但是问题出来了,用TTable做的程序可以显示错误,可是用TQuery做的程序不能显示错误,在TQuery的OnPostErrorr事件插入的相同代码,没有反映!这是为什么?请告知!
解决方案 »
- 求救,Qreport控件问题?
- 在98下可以使用,但在XP的98虚拟机下无法使用,请问为什么?
- 谁能帮忙贴个激活灰色按钮(另一程序的标准按钮)的代码
- 急!关于delphi7下水晶报表控件编程的问题!高分!
- 在DELPHI中怎么创建临时表?
- ★学汇编(delphi用的那种)应该看什么书?请推荐几本,谢谢!
- 请问sqlserver7.0关系图的设置怎样啊?
- DLL库函数问题
- 怎样控制StringGrid的第一行和第一列的显示方式为标题栏的形式???给一些代码,好不好?
- delphi中如何调用帮助?我是初学者,请多多指教
- reedseutozte(haha),进来拿分!谢谢!(2)
- 哪位高手能给点远程控制的意见
我刚才试验了一下,没有发现你说的现象。
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Insert;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.Post;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
Query1.Delete;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
Query1.Cancel;
end;procedure TForm1.Query1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
ShowMessage(e.Message);
end;
当我录入重复的数据,然后点击保存的时候,给出了错误提示
还有我是用Query1.SQL.Add,sql语句操作数据库的不是insert
try
execsql;
except
自己的错误代码
end;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO PRODUCE ');
Query1.SQL.Add('(ID,NAME,PRICE) ');
Query1.SQL.Add('VALUES ');
Query1.SQL.Add('('''+Edit1.Text +''','''+Edit2.Text +''','+Edit3.Text+')');
showmessage(Query1.SQL.Text);
Query1.ExecSQL;
except
on E:Exception do
begin
str((E as EDBEngineError).Errors[0].ErrorCode,s);
showmessage(s);
end;
end;我把程序改成这样了!看来在Query控件里用sql操作数据库是处发不了OnPostError事件的!
执行该语句的地方手动捕获并处理异常
Post;
except
\\\
end
不用在 OnPostError时候响应事件。