首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

来看看这个有关问题

2012-02-23 
高手进来看看这个问题。1、Server.exe是DataSanp服务器。用了一个 TADOConnection 名称为 ADOConnection1 连

高手进来看看这个问题。
1、Server.exe是DataSanp服务器。

  用了一个 TADOConnection 名称为 ADOConnection1 连接Sql Server。
  用了一个 TADOQuery 名称为 ADOQuery1 连接ADOConnection1。
  用了一个 TDataSetProvider 名称为 RemoteDataSetProvider1 连接ADOQuery1。

2、aaa.exe是中间层。
  创建了一个TRemoteDataMoudle。
  type
  TSqlHelper = class(TRemoteDataModule, ISqlHelper)


  用了一个 TSQLConnection 名称为 _SQLConnection 连接Server.exe。
  用了一个 TDSProviderConnection 名称为 DSProviderConnection1 连接_SQLConnection。
  用了一个 TClientDataSet1 连接 DSProviderConnection1。
  用了一个 TDataSetProvider 名称为 DataSetProvider1 连接ClientDataSet1。

3、test.exe是客户端测试程序。
  用了一个TDCOMConnection 名称为 DCOMConnection 来连接中间层(中间层是远程数据模块)。
  用了一个 TClientDataSet 名称为 cdsTest 来连接 DCOMConnection。

  现在情况如下:
  如下代码能正确执行,并返回数据。
  cdsTest.Active := False;
  cdsTest.DataRequest('select * from table');
  cdsTest.Open;

  如下代码能不能正确执行。
  cdsTest.Active := False;
  cdsTest.DataRequest('update table set somefield = 0 where .....');
  cdsTest.Execute;
  报错如下:cdsTest:Execute not Supportted.

  请问为什么不能执行Delele,Update,Insert。只能查询数据。

  如果我用独立的exe直接连接Server.exe,那么上面的
  cdsTest.Active := False;
  cdsTest.DataRequest('update table set somefield = 0 where .....');
  cdsTest.Execute;
  是可以正确执行的。我的判断是DataSnap服务没有问题。问题应该出在TRemoteDataMoudle这个中间层。

[解决办法]
cdsTest.ApplyUpdates()?我不确定。

热点排行