中间层的TADODataSet的CommandText改变了,但客户端TClientDataSet还是原来的结果,why?(100分)

  • 主题发起人 主题发起人 codesite
  • 开始时间 开始时间
C

codesite

Unregistered / Unconfirmed
GUEST, unregistred user!
后台: MS SQL Server 2000的Pubs数据库
中间:ADOConnection1连接SQL Server,ADODataSet1的CommandText为Select * from authors
ADODataSet1的Connection是ADOConnection1和DataSetProvider1的DataSet是
ADODataSet1
客户端:SocketConnection连接中间层服务器,一个TDBGrid、TClientDataSet、一个
TDataSource.
症状:
(1)启动客户端,DBGrid显示的是authors表的记录;令ADODataSet1.CommandText:=
Select *From Publisher,运行DBGrid的结果还是authors的记录。
(2)在中间层原来两个TDataSetProvider,再增加一个TADODataSet和TDataProvider(
名为dspGeneral),客户端新增一个TClientDataSet,但是它的ProviderName属性里没有
dspGeneral可选,只有两个另外原有的DataSetProvider可选,我在注册表里将和中间层
有关的项全部删掉后注册应用程序服务器后,客户端的ClientDataSet.ProviderName正常
了,还有其他办法吗?
 
(1)
ADODataset.Close
ADODataset.Open
Clientdataset.Close,
Clientdataset.Open
刷新一下就可以了
 
同意楼上的观点
 
Clientdataset.active:=false;
Clientdataset.active:=true;
 
Clientdataset.refresh;
刷新一下。
 
马上试了shiningplus、hiyaolee和dedema的方法,还是不行,同时将ClientDataSet的Active属性在False和
True之间切换了几次,还是没效果,socketconnection也试了几次,问题依然。
问题的解决办法是:修改完RemoteDataModal后单独启动应用程序服务器,然后关闭;
再打开客户端程序。如果将应用程序服务器和客户端放在同一个Project Group里,修改
完Remote DataModal,再次启动应用程序服务器,接着再关闭,然后再双击Project Group的
客户端程序也是有问题的,似乎要不能在同一个Project Group才可以,puzzle~~
而且我发现,如果在一个Project Group里包含客户端和中间层,在关闭窗体时,Delphi很容易死
(D7、D6都是这样子)。

 
试试开始将adodataset的active设为false
 
谢谢各位
 
重新编译下server。该结束了/
 
把datasetprovider的属性:option里的poallowcommandtext置为true试试。
 

重新编译server,就能看到了呀
此贴结束吧
 
Clientdataset.Close,
Clientdataset.Open
 
Clientdataset1.Close ;
ClientDataSet1.XMLData := '' ;//这句很重要
Clientdataset1.Open ;
 
快结帖啊.....迟到了.....
 
后退
顶部