是KEY VIOLATION错误吗?
我也很烦这个,一起探讨
1、给用户操作加限制,限制约严格,出错可能性越小。并把用户所有可能的操作都做条件限制(包括错误操作),有错就ShowMessage('相应错误'),
方法很繁琐,考虑条件多,实现简单
2、使用一外部或技术得到错误句柄,然后进入我们自己的出错处理程序。
fouction DBError(DataSet:TDataSet;E:EDatabaseError;Var Action:TDataAction);
const
ekeyviol=9729;//谁告诉我什么意思?为什么是9729
var
iDBIError:Integer;
begin
if (E is EDBEngineError) then
begin
IDBIError:=(E as EDBEngneError).Errors[0].Errorcode;
case IDBError of
ekeyviol;
begin
MessageDlg('主键重复'),mtWARNING,[MBol],0);
Abort;
end;
end;调用:procedure TMainForm.Table1EditError(DataSet:TDataSet E:EDatabasseError; VarAction: TDataAction);
begin
DBError(Tablel,E,Action);
end;由于只是从我的笔记照原样再打下来的,难免有疏漏的地方,见谅!
请高手指正!
我也很烦这个,一起探讨
1、给用户操作加限制,限制约严格,出错可能性越小。并把用户所有可能的操作都做条件限制(包括错误操作),有错就ShowMessage('相应错误'),
方法很繁琐,考虑条件多,实现简单
2、使用一外部或技术得到错误句柄,然后进入我们自己的出错处理程序。
fouction DBError(DataSet:TDataSet;E:EDatabaseError;Var Action:TDataAction);
const
ekeyviol=9729;//谁告诉我什么意思?为什么是9729
var
iDBIError:Integer;
begin
if (E is EDBEngineError) then
begin
IDBIError:=(E as EDBEngneError).Errors[0].Errorcode;
case IDBError of
ekeyviol;
begin
MessageDlg('主键重复'),mtWARNING,[MBol],0);
Abort;
end;
end;调用:procedure TMainForm.Table1EditError(DataSet:TDataSet E:EDatabasseError; VarAction: TDataAction);
begin
DBError(Tablel,E,Action);
end;由于只是从我的笔记照原样再打下来的,难免有疏漏的地方,见谅!
请高手指正!
我想在SQLSERVER的触发器中作这些事情啊,而不是在DELPHI的应用程序中做。
E.message是错误的提示信息,一个简单的办法是,用字符替换将它转化为中文, 而后弹出自己的错误窗体或不弹,系统缺省得窗体就不会出现了。
能说具体点吗?拜托啊,老大
可能出错误得地方
except
showmessage('您的操作出现了错误!!!');
end;
把系统的异常屏蔽掉,改为自己的错误信息