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

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);

 

转载于:https://www.cnblogs.com/delphi2006/p/10043288.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值