急!!!clientdataSet编辑记录换行时,总是提示错误'field value required'(100)

  • 主题发起人 主题发起人 tonky
  • 开始时间 开始时间
T

tonky

Unregistered / Unconfirmed
GUEST, unregistred user!
用sql server2000 + dbexpress+TDataSetProvider+clientdataSet在编辑记录时总是提示‘field value required',情况如下: 我在数据库表中,大部分字段都设了默认值,并且不允许为空;但在clientdataSet编辑记录时,总是提示‘field value required';换用sql server2000 + ADO+TDataSetProvider+clientdataSet即没有上述问题,折腾了几天,还想用dbexpress方案感觉速度较快,请各位朋友指点解惑,很急!!!但不知如何解决! 不胜感激!
 
情况是这样的:我原来用ADOquery+TDataSetProvider+clientdataSet开发进销存系统,已有客户使用了,现在考虑速度问题想改用dbexpress+TDataSetProvider+clientdataSet,改用dbexpress后,客户端用原来的,数据库也没变,还是操作原来已有的数据,如销售订单记录,都是原来的数据,但进入单据修改数值后,新增一行或想移动修改另一行,总是提示错误‘field value required',按正常以前的单据记录都有数值或默认值了,为什么还会出错呢? 非常痛苦,请高手帮忙,感谢感谢!
 
sql server的默认值处理有一些问题,我一般是在newrecord事件中赋默认值,舍弃在server端表中设置默认值的做法,这样控制起来比较直观,也没有问题
 
将 SQLDataSet 的字段的 Required 设为 false 即可
 
TO kaida: 我的中间层只有一个 SQLDataSet 和Tdatasetprovider,如何动态设置Required 设为 false ?
 
不要使用ClientDataSet的ApplyUpdate把CDS的Delta数据提交到中间层,自己重新再组合然后提交到数据库
 
楼主是不是把表的字段加入到clientdataSet里面了? 如果是, 请双击clientdataSet,查看每个字段的Required属性, 把该属性为True的改为False就行了.
 
procedure TDM.SQLDataSet1AfterOpen(DataSet: TDataSet);var i: integer;begin for i := 0 to DataSet.FieldCount - 1 do DataSet.Fields.Required:=false;end;
 
多谢kaida,问题解决了.
 
后退
顶部