在AfterOpen事件中更改一个字段的值,代码大致如下:  DataSet.First;
  while not DataSet.Eof do
  begin
    DataSet.Edit;
    DataSet.FieldByName('VC_RISK_SUMMARY').AsString := sRisk;  //sRisk在之前有赋值
    DataSet.Post;
    DataSet.Next;
  end;运行时报错:Field value required
将'VC_RISK_SUMMARY'字段的属性改为fkInternalCalc又是可以的,
顺便问一下,sRisk这个值的长度可能会比较大,请问tStringfield在长度上有什么限制么?

解决方案 »

  1.   

    Field value required是不是没值?TStringField有长度限制的,各种不同的数据库不同,可以用TWideMemo
      

  2.   

    好奇怪,为什么在AfterOpen中修改
      

  3.   

    请问tStringfield在长度上有什么限制么?
    ----------------------------------
    tStringfield本身支持的长度很长(和string类型的长度是一致的),你这里的长度限制取决于你给这个字段设置的长度。
      

  4.   

    运行时报错:Field value required 感觉和字段长度没有关系,是不是你将这个字段的Required属性设置为True了?如果sRisk为空可能会提示这个错误。
      

  5.   

    不是这个字段.所有字段都判断一下 isnull