保存数据的问题。(100分)

  • 主题发起人 主题发起人 陶庆
  • 开始时间 开始时间

陶庆

Unregistered / Unconfirmed
GUEST, unregistred user!
我有进行数据操作时,对数据库进行索引,但是在输入的过程中,有时会
重复输入关键字段,保存时出现EDBEngineError with 'Key Violation'
错误,请问如何解决?
用try ... except...end无效。
用finddkey()查不出。
 
你将Application.OnException替换掉就可以了。不过你替换后要仔细处理各个异常,
不然程序出错,你还不知道。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables, ExtCtrls, DBCtrls, Mask;

type
TForm1 = class(TForm)
Button1: TButton;
Table1: TTable;
DBEdit1: TDBEdit;
DataSource1: TDataSource;
DBNavigator1: TDBNavigator;
Database1: TDatabase;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure MyPorcprocedure (Sender: TObject; E: Exception);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
application.OnException:=MyPorcprocedure;
try
table1.Post;
except
application.HandleException(Self);
end;
end;

procedure TForm1.MyPorcprocedure (Sender: TObject; E: Exception);
begin
ShowMessage('This is my execption handler');
end;

end.
 
设置一个自增型字段(IDENTITY),即可!
 
老兄用的是主键还是索引,如是索引,定义为可重复的就行。
Try Except应该可以截获错误。
TTable有一个OnPostError事件可用。
 
如果你在设计状态下运行时,系统会提示您所说的
错误。这只是为了你调试方便。
当你运行编译后的EXE后,TRY。。。EXCEPT就
会起作用。
 
在delphi菜单 tools/debugger options 里面可以取消delphi弹出exception
 
保存前判断关键字是否重复
 
OnPostError事件中捕获错误。有错误是好信息,至少可以让你进行附加处理
 
设置数据库唯一主键。
 
若不怕麻烦的话, 添加一个TQuery 控件,用这一个控件去过滤你将要输入的数据,
若过滤后没有数据剩余,则允许数据上报,否则,弹出提示框.
 
接受答案了.
 
后退
顶部