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事件了。
在数据库系统设计中经常要用到在表格中进行数据录入,如何判断在数据导入时的数据有效性呢?下面介绍几种常用的方法与大家交流。
方法一: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事件了。
相关文章推荐
- Delphi 在dbgrideh中表格输入数据时有效性的检查(转)
- Delphi 在dbgrideh中表格输入数据时有效性的检查(转)
- Delphi 如何判断在DBGridEh中某格输入数据是否符合约束
- Delphi 如何判断在DBGridEh中某格输入数据是否符合约束
- 关闭网页时检查输入数据的有效性
- 数据输入合法性检查
- Delphi DbgridEh表格内容显示的状态
- javascript中提交时先检测数据的有效性,如果输入的值无效,则出现提示,并停止提交。
- cin输入类型与数据类型不符检查
- HTML5利用约束验证API来检查表单的输入数据
- HTML,angularJS表格内容排序,点击删除,删除当前,输入内容显示包含内容的数据
- ExtJs4 表格输入时的有效性验证
- delphi中当某个单元格输入数据时,发生的事件
- 在可编辑表格EditorGrid中,我选择一行已输入的数据,点击删除按钮,该行数据将被删除,然后当我点击表单提交按钮时,已经被删除的那一行数据仍然被插入数据库中
- 使用ValidationRule类来检查用户输入的有效性
- DbgridEh数据导出到Excel的方法(Delphi)
- 表格 动态输入多行数据并提交。。。。。。。。。。。。。。。
- Delphi与Word(二)取得Word 表格中的数据
- Delphi读取不Word中不规则表格数据并转换成标准表格
- C++检查输入数据类型? - 知乎