TClientDataSet 提交时提示 Field value Require…

2018-12-06 07:31:05来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

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

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

 

 1 procedure postAndCheckValue(ds: TDataSet);
 2 var
 3   I: Integer;
 4   curField: TField;
 5   strField: TStringField;
 6 begin
 7   try
 8     ds.Post;
 9   except
10     on E: EDBClient do begin
11       if E.Message = 'Field value required.' then begin
12         for I := 0 to ds.Fields.Count - 1 do begin
13           curField := ds.Fields[I];
14           if curField.Required and ds.Fields[I].IsNull then
15             raise EDBClient.Create('必要的数据项“' + ds.Fields[I].DisplayLabel + '”为空值!', E.ErrorCode);
16 
17           if curField.Required and (curField is TStringField) then begin
18             strField := curField as TStringField;
19             if strField.FixedChar and (strField.AsString = '') then
20               raise EDBClient.Create('必要的数据项“' + ds.Fields[I].DisplayLabel + '”为空值!', E.ErrorCode);
21           end;
22         end;
23       end;
24       raise;
25     end;
26   end;
27 end;

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

myDataSet.append;

postAndCheckValue(myDataSet);

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Delphi 10.3 Rio + iOS 12.1 SDK 编译错误 "libcharset.1.d

下一篇:Delphi XE 10.2.3使用CEF4Delphi取网页元素时碰到 变问