Delphi 在dbgrideh中表格输入数据时有效性的检查(转)

出处:http://www.haogongju.net/art/1231860

数据库系统设计中经常要用到在表格中进行数据录入,如何判断在数据导入时的数据有效性呢?下面介绍几种常用方法与大家交流。

方法一:Dbgrid是与Table,在Table的Column的OnSetText和OnValidate事件中处理。 
1、在OnSetText中判断数据的合法性,如果不合法,在OnValidate处理,如果不合法则abort

2、抛出一个异常Raise,即可保证焦点不会丢失。


可以在Table1.BeforePost里面处理,如果不符合要求,ShowMessage(""),然后Abort;


方法二:如果是Adoquery ,在Column的OnSetText和OnValidate事件中处理。 
在OnValidate处理,如果不合法则abort。

procedure Tfrm_cginput.q_maind_dateValidate(Sender: TField);

begin
if Sender.FieldName='d_date' then
if (Sender.AsDateTime>_DEnddate) or (Sender.AsDateTime<_DStartdate) then
begin
showmessage('日期超出范围');
abort;
end;
end;


方法三:


可以用DBGrid1ColExit事件进行。 
procedure TForm1.DBGrid1ColExit(Sender: TObject); 
begin 
case DBGrid1.SelectedIndex of 
0:if DBGrid1.DataSource.DataSet.Fields[0].value<>'我想要的值' then 
于吗于吗。 
1: 
.. 
end; 
end;


附加:

DBGridEH1.columns[i].OnUpdateData也可以

DBGridEH1.columns[i].OnUpdateData;和在CDS.Fields[i].OnValidate进行校验的对比:

更新才触发,插入不触发;                  插入,更新都触发;

使用第三方控件的事件实现;                使用delphi自带控件实现;

界面层上进行控制;                        数据层进行控制;

控制数据能不能改的问题;                 检查改了的数据是否合法的问题;                      


综上比较:行校验,是对数据的合法新进行判断,应该使用 CDS.Fields[i].OnValidate;

          像权限控制,需要密码验证才能改数据的,应该使用DBGridEH1.columns[i].OnUpdateData

计算字段,肯定是在cds.fields[i].OnChage事件了。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值