DBGrid使用过程中的简单问题。(100分)

B

Beast

Unregistered / Unconfirmed
GUEST, unregistred user!
原来都是把数据取出来自己维护文档和视图,没有使用过数据敏感控件,搜索了几次也没有
得到特别准确的答案,所以问各位一些低级问题,莫见怪!
我使用DBGrid+AdoQuery
1、DBGrid被编辑时,我想校验数据的合法性,应该在那个事件中处理,该如何处理呢?
2、现在在Query的OnBeforePost时检验数据,发现错误的时候我就Query.Cancel,结果
发现确实是没有生效,但是却多了一条记录(Query自动生成一条记录),不知道为什么。
 
能把代码贴出来吗?
 
to2
应该用abort吧,你可以试一试
to1
我作的时候是在beforepost的时候
 
同意sgs125
 
谢谢,那么怎么在一个单元格被编辑完了之后就马上校验数据是否合法呢?
听说有一个OnValid什么的时间,在那里呀?
 
Query 没有Abort方法呀
 
Use Abort to escape from an execution path without reporting an error.

Abort raises a special "silent exception" (EAbort), which operates like any other exception, but does not display an error message to the end user. Abort redirects execution to the end of the last exception block.
 
感谢楼上仁兄解释;
但是Abort以后DbGrid上显示的还是修改后的值呀!
使用Qurty的Cancel方法给可以恢复显示为原来的改动前的值了。
 
添加为永久字段。
OnValidate事件上写代码。
 
怎么添加为永久字段呀?
 
双击adoquery,再右击,选add all fields
 
谢谢楼上各位,待我试试身手,晚2日结帖
 
我在OnValidate里面验证字段的合法性,可是我新建一条记录的时候可不会触发验证代码呀。
各位是什么做的,能否给点代码参考。
不胜感激!
 
>>但是Abort以后DbGrid上显示的还是修改后的值呀!

dbgrid.dataset.close;
dbgrid.dataset.open;

 
DbGrid上的EditButton是怎么能出来的 ??
 
上面的问题解决了~~不好意思~~
那么DBGRid上选择了一条记录的时候会触发什么事件呢?
 
if datetime>now then
showmessage();
之类就会触发。
 
可能会错意了
我发现ONDataChange可以触发选择记录的事件
 
About;方法是Delphi的方法,不是Query的方法,表示引发一个异常,但不出对话框,
当然,如果你要引发其他异常也是可以的,只要在OnBeforePost引发异常,
更新就不会继续
 
顶部