TClientDataSet 提交时提示 Field value Required 但是未提示具体哪个字段。
程序员文章站
2022-03-10 12:46:42
TClientDataSet 提交时提示 Field value Required 但是未提示具体哪个字段。 这个错误特别麻烦,要使用 midas 控件时,虽然很方便。但是出错了根本找不到原因,特别是这个异常。下面的补丁,可以帮助找到错误原因。 注:我们自己在使用的时候,采用了控件继承,因此可以把这 ......
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);
上一篇: PC容光焕发:一季度出货量暴增55%
下一篇: Delphi-面向对象