clientdataset错误!record not found or changed by other user

pjq1 2003-12-07 10:12:30
具体情况如下:
实现:1、通过clientdataset的commandtext动态改变所要查询的表,即:
想查表a就用select * from a,想查表b就用select * from b
2、手工获取大字段(blob字段)
服务器端:
远程数据模块 RDM 中有query和datasetprovider;
datasetprovider的poallowcommandtext为true
pofetchblobsondemand为true(需手工获取blob字段)
客户端:有socketconnection,clientdataset;
clientdataset的remoteserver为socketconnection;
providername为RDM.datasetprovider
fetchondemand为false;(blob字段不自动打包)
afterscroll中调用fetchblobs(获取blob字段)
这样在调用 clientdataset.commandtext:='select * from a';
clientdataset.open;
时就出错 record not found or changed by other user
主要问题还是在fetchblobs,要是不调用这句的话就没问题,但这样没法获取blobs字段,请问高手应如何解决? 先谢谢了!
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghui 2003-12-08
  • 打赏
  • 举报
回复
将datasetprovider.UpdateMode改为upWhereKeyOnly
并且为query的FieldList加入所有的字段,将主关键字段的 ProviderFlag.pfInKey设为True
即可。
LookFuture 2003-12-08
  • 打赏
  • 举报
回复
不知道你到底在什么情况下调用的。
建议要改变clientdataset时,直接edit,然后post再传到服务端,更新服务端TProvider。
或者直接调用服务端的方法,执行更新SQL命令
haike 2003-12-08
  • 打赏
  • 举报
回复
你的ClientDataSet无法定位到记录,你的表有没有主键。
wolfhe 2003-12-08
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2528/2528542.xml?temp=.715069
pjq1 2003-12-08
  • 打赏
  • 举报
回复
to haike:
这些都没问题,我用dbgrid都可以显示出来呀,就是在调用fetchblobs来获取当前记录的
blobs字段时才出错的

谢谢两位了,很奇怪,昨天不知怎么搞的又没这个问题了。但是还有个新问题:就是在主窗口
的oncreate中把clientdataset的afterscroll改为自定义过程,即:DM.clientdataset.afterscroll:=aftermyscroll,而在aftermyscroll中调用(dataset as TClientdataset).fetchblobs时又出现这个问题,请帮忙看一下好吗

1,594

社区成员

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

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