TClientDataSet 提交时提示 Field value Required 但是未提示具体哪个字段。

这个错误特别麻烦,要使用 midas 控件时,虽然很方便。但是出错了根本找不到原因,特别是这个异常。
下面的补丁,可以帮助找到错误原因。

注:我们自己在使用的时候,采用了控件继承,因此可以把这个功能变成控件基本功能,但是继承相关代码特别多,就不在这里贴了。

 procedure postAndCheckValue(ds: TDataSet);
var
I: Integer;
curField: TField;
strField: TStringField;
begin
try
ds.Post;
except
on E: EDBClient do begin
if E.Message = 'Field value required.' then begin
for I := to ds.Fields.Count - do begin
curField := ds.Fields[I];
if curField.Required and ds.Fields[I].IsNull then
raise EDBClient.Create('必要的数据项“' + ds.Fields[I].DisplayLabel + '”为空值!', E.ErrorCode); if curField.Required and (curField is TStringField) then begin
strField := curField as TStringField;
if strField.FixedChar and (strField.AsString = '') then
raise EDBClient.Create('必要的数据项“' + ds.Fields[I].DisplayLabel + '”为空值!', E.ErrorCode);
end;
end;
end;
raise;
end;
end;
end;

调用时,如果出错。就用这个进行提交即可:

myDataSet.append;

postAndCheckValue(myDataSet);

最新文章

  1. ubuntu 12.04 LTS 如何使用更快的更新源
  2. ebs R12.2启动报错"failed to start a managed process after the maximum retry limit"
  3. Oracle 正则表达式使用示例
  4. MySQL-Front 建表引发的一点小思考(数据表格模版)
  5. Go eclipse plugin
  6. React生命周期浅析
  7. CentOS 7 中firewall-cmd命令
  8. TTL值的含义以及与域名DNS TTL值的区别
  9. ACM - ICPC World Finals 2013 A Self-Assembly
  10. 通过org.springframework.web.filter.CharacterEncodingFilter定义Spring web请求的编码
  11. 用链表实现栈----《数据结构与算法分析----C语言描述》
  12. 如何在ubuntu 12.04下搭建Python Django环境
  13. Python 面向对象之一
  14. bzoj1233[Usaco2009Open]干草堆tower 单调队列优化dp
  15. 北京大学Cousera学习笔记--2-计算导论与C语言基础-第一讲.计算机的基本原理-图灵机
  16. Smart Link
  17. 【Java】自动类型转换规则
  18. bootstrap table数据分页查询展示
  19. Unity发布各平台路径
  20. DataTable相关

热门文章

  1. [基础知识]PeopleSoft应用服务器上的进程含义
  2. css 中可以继承的属性
  3. 单元测试(四)-隔离框架NSubstitute
  4. Sql 中存储过程详细案例
  5. [SSRS / RV] (.rdlc报表)冻结表头,固定行列标题
  6. Python+Selenium笔记(二):配置谷歌+IE环境
  7. 让 Angular 应用动起来!
  8. memcached 查看所有的key
  9. DataContract和DataMember的作用
  10. EJB Remote/Local 绑定和JNDI Lookup