Database(BDE)+Table+DataSetProvider+ClientDataSet+DataSource+DBGrid遇到的问题

BlueStorm 2003-06-17 04:42:39
Database连接SQL SERVER,rec_num是Table的主键,在DBGrid中修改Price字段,然后用ClientDataSet.ApplyUpdates(0)做数据更新. 当DataSetprovider的UpdateMode属性设为upWhereAll时能正常更新.UpdateMode属性设为upWhereKeyOnly时提示错误'Unable to find record. No key specified'.
我试过调整DataSetprovider的ResolveToDataSet属性值及ClientDataSet的StoreDefs属性值,甚至在rec_num字段的ProviderFlags属性中加入pfInKey, 但问题仍然存在.
我究竟错在什么地方?

...全文
52 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwy2258588 2003-09-16
  • 打赏
  • 举报
回复
up
skypeople 2003-09-16
  • 打赏
  • 举报
回复
这个问题有一点点复杂,,如果你要用 UpdateMode=upWhereKeyOnly 实现更新话那么你要保证在
CLIENTDATASET有一个字段的PROVIDERFLAGS中有pfInKey,,但是我测试过D5好象你在客户端改动的关于PROVIDERFLAGS的动作不会被传递到中间层,,我看过源码也没有找到相当的写入数据包的代码,,不知道是BUG还是我的看错了,,所以你用SQLRESOLVE的方式时中间层会找不到你的主建字段,
所以最直观的解决方式是,,你必须自己把谁是主建的信息传给中间层, 然后在PROVIDER的ONUPDATEDATA事件,,将这个信息传更新中CDS中(这个事件的一个参数),,,具体方法相信你会
做;

记到给你哦!!!
jaunmai 2003-09-16
  • 打赏
  • 举报
回复
UpdateMode=upWhereKeyOnly 时必须指定对应DataSet要包括所有的关键字段.

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧