高手哪去了??能解决这个三层结构中主从表的问题吗?

xlzps 2001-03-07 08:31:00
我在服务器端用两个ADODataSet设定了它们的主从关系,客户端用的是ClientDateSet,已经将ClientDateSet2(子)的DataSetField指向了ClientDataSet1(主)中的子集字段(完全按李维的方法设的),在数据浏览时都无错误,就是在查询时有如下错误:
输入查询条件后,头一次按查询按钮也正确,若不改变查询条件而再按查询按钮,则子表的所有记录都出现了(主表没有错误),就象两者已经无关联了一样。ClientDataSet2的PackRecords不管设为-1还是0都一样!!
我的查询语句是这样写的:

ClientDateSet1.close;
ClientDateSet1.CommandText :=‘查询条件’;
ClientDateSet1.open;

不知我说清楚没有,请问这是为什么??怎么解决??

...全文
176 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlzps 2001-06-26
  • 打赏
  • 举报
回复
ADO的Bug!
xlzps 2001-03-22
  • 打赏
  • 举报
回复
经过测试,该方法能彻底解决问题!就不知会不会很影响速度,不过我觉得本身设置CientDateSet的CommandText属性时就会向服务器要求重新传数据,故我想应该不会,
大家认为有道理吗?
xlzps 2001-03-22
  • 打赏
  • 举报
回复
该问题我试过许多方法,我试出的最好的解决方法是:
ClientDateSet1.close;
ClientDateSet1.CommandText :=‘查询条件’;
ClientDateSet1.open;
后加一条语句:ClientDateSet1.ReFresh;
而统一在ClientDateSet1的AfterReFresh事件中写如下代码:
if ClientDateSet1.RecordCount=1 then
begin
str:=ClientDateSet1ID.Value;(ID为主表的主关键字)
ClientDateSet2.Filtered :=True;
ClientDateSet2.Filter:='OR_NU='+''''+str+'''';
end;
largewang 2001-03-22
  • 打赏
  • 举报
回复
在服务器上单做一个查询吧
xlzps 2001-03-22
  • 打赏
  • 举报
回复
nulk(nulk)
我怎么用Close从表再Open,好像不行一样??这跟用Refresh有点类似,都不能解决问题。还有,主从表的主表的头一条记录在别处也老出问题(经常将子表所有记录查出来),别的都好好的,不知那位老兄有好的解决办法没有??
wgjsoft 2001-03-21
  • 打赏
  • 举报
回复
关注!
xlzps 2001-03-21
  • 打赏
  • 举报
回复
设置都没有问题,这是Delphi本身的一个Bug,当查询出来主表只有一条记录时可以将子表过滤一下解决!
nulk 2001-03-21
  • 打赏
  • 举报
回复
关注!
出现这个时,我的办法是Close从表再Open
superwjn 2001-03-21
  • 打赏
  • 举报
回复
不会吧!,我试过好像不会出现你说的问题。检查一下provider和adodateset的设置有没有
问题。packrecords属性指定一次下载的记录数,-1是下载所有记录。
xlzps 2001-03-07
  • 打赏
  • 举报
回复
哎,真可怜,没人知道?
xlzps 2001-03-07
  • 打赏
  • 举报
回复
昨天晚上发的帖子,怎么没有一个人回答??这里是不是高手越来越少了??

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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