您的位置:首页 > 编程语言 > Delphi

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

2012-10-03 12:18 218 查看
出处: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事件了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: