except
on E:Exception do
begin
if E is EDBEngineError then
begin
Str_ErrorCode := EDBEngineError(E).Errors[0].ErrorCode
end;
提示:
Project Re.exe raised exception class EOleException with message '无法将 NULL 值插入列 'RoleName',表 'YuYue.dbo.Role';该列不允许空值。INSERT 失败。
我换成 EOleException 再试试。 欢迎指教
解决方案 »
- 有谁知道蜘蛛图这个效果怎么实现
- 关于 TidTcpServer cpu占用率过高的问题
- 一个关于DLL的问题,请教大家?
- 想用DELPHI做个域名反解析的程序
- adodataset 新增问题
- 如何 捕捉 程序或所有控件 发出的所有异常 信息 , 并 屏闭这些信息 换成 自己的信息 ??????????? 急!!!!!!!!!!
- 请frend进来拿分!
- sql server中自定义函数传递的参数能否为表达式?
- 问:SQL脚本在DELPHI程序中怎样执行,在MS SQL中又怎样通过T-SQL语句调用?
- 哪位大侠行行好,把我的密码屏蔽掉,只要不需输密码,分数一定不会少。
- ListView_GetItem(List_Handle,objItem) 数据为空?
- DELPHI中如何控制FASTREPORT中的页面大小?
Unregistered
未注册呀,当然有限制了,
你注册去“注册你知道的哟”
“注册你是知道的哟”
还是下载一个稳定些的版本吧
pos('insert',errorstr)
pos('null',errorstr)
pos('插入列',errorstr)
pos('表',errorstr)
找到关键字段,表等,然后提示“表XX不能为空,插入失败”还有一种做法更简单,从SQL SERVER中找出现在修改的表不能为空的字段,提交前用FOR进行比较
sysobjects,syscolumns关连这两表,isnullable根据这个字段值判断是否可以为空
不要具体到那一种错误,因为很多,你不可能列出所有的错误类型来,下面这样就行了
except
on E: Exception do
MessageDlg(E.Message, mtError, [mbOk], 0);
end;
我只想处理数据库表字段 唯一性 不为空 的异常处理。 其它的错误统一记录到LOG表里边去。
有没有办法捕获,这2个特定的异常呢?
sysobjects,syscolumns关连这两表,isnullable根据这个字段值判断是否可以为空,用这种方式可以解决不为空的问题
if PosEx(C_Null,Str_LowerCase) > 0 then
begin
if FinalUnit = C_UN_FrmRole then
begin
StrMsg :='¡¾' + E_NotNullField + '¡¿ ²»ÄÜΪ¿Õ,ÇëÖØÐÂÊäÈë¡£'
end;
end;if PosEx(C_Unique,Str_LowerCase) > 0 then //ΨһֵÒì³£´¦Àí
begin
if FinalUnit = C_UN_FrmRole then
begin
StrMsg := '¡¾' + E_Unique + '¡¿ ÒѾ´æÔÚ£¬¸ÃÖµ±ØÐëΨһ,ÇëÖØÐÂÊäÈë¡£'
end;
end;