help!如何屏蔽(去掉)数据库错误信息? ( 积分: 80 )

  • 主题发起人 主题发起人 xstdljj
  • 开始时间 开始时间
X

xstdljj

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个很简单的工具时,用的标准控件,就AdoConnection,和AdoQuery,由于delphi6上装了公司的控件,低层源码被重写过,比如说adodb.pas,db.pas等,封装了一些自己的商业逻辑,会对使用标准控件连接数据库的系统产生影响,编译能通过,但一旦修改数据库或是插入记录时就会报错,在没有安装自己控件的delphi7上运行是没问题的。而且错误是中文,说明不是delphi,是sqlserver的。而且错误是在第一次修改数据或是插入数据时报,以后正常,不影响程序,我想知道如何去掉这个错误消息框,让他不出现<br>比如窗体里有一DBEdit,里面显示的数据,我把光标插入里面时没问题,一旦修改数据,数据库就会报错:“参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。.”
 
没有人知道吗?不要看我写这么多,目的很简单,去掉数据库弹出的错误信息
 
这个提示是经常出现的,错误可能,并不是你的重写的问题
 
看到这个问题,真是不想回复<br>在ADOQuery,&nbsp;或者ADOTable上面不是都有<br>on*****Error吗,在那里写入一些代码,问题可以解决<br>传入参数Action:=daAbort就会得到你想要的结果。但数据是否真正被保存,不一定了。
 
我测试过不下100遍了,即使建一个就2个字段的表,用装有我们自己控件的delphi编译后运行就报错,换了无3方控件的delphi是没有半点问题的,我看到以前的同时做的小工具也存在和我一样的问题,一旦修改马上弹出错误。<br>&nbsp;&nbsp;&nbsp;&nbsp;刚刚试了一下,我把所有的ADOQuery的事件都测试了,都是在触发这些事件之前就弹出错误,但是运行程序时确是先把光标聚焦在某一数据感知组件时没问题,修改时触发错误。<br>&nbsp;&nbsp;&nbsp;&nbsp;高人呢?!这怎么处理?
 
看来羊毛是出在羊身上的,谁改了找谁去
 
来自:teclick<br>你的方法我早就试过了,但是还没触发下面这个事件,错误就弹出了<br>procedure&nbsp;TMainFrm.ADOQuery1EditError(DataSet:&nbsp;TDataSet;&nbsp;E:&nbsp;EDatabaseError;<br>&nbsp;&nbsp;var&nbsp;Action:&nbsp;TDataAction);<br>begin<br>&nbsp;&nbsp;Action:=daAbort;<br>end;
 
如果是这样的话,估计你需要修改底层的代码了。
 
看执行的样子,错误出来后,所有的ADOQuery的事件未触发,反过来想,如果ADOQuery的某个数据库错误事件触发,弹出的信息应该是洋文,而我这里是中文,这个倒还可以解释。有没有方法截获这个错误,把它屏蔽掉?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改低层源码那是不可能,公司的控件不是谁都能改的,再说我也不会,呵呵
 
因为错误是冒泡的,没有错误处理代码时,就向上提交,直到Application也没处理才直接报错。你在工程文件代码中使用Try。。。except。。end,应该可以拦截,你试试。
 
问题解决了!最后我在窗体上加了一个ApplicationEvents1组件,在其OnException事件中加了句Abort就OK了,呵呵,好的是错误只在第一次修改时显示。谢谢大家!谢谢!虽然是我自己解决的,但是我还是把分分给大家,比起她妈的csdn大富翁的朋友们要积极多了
 
后退
顶部