我的配置:
server : RDM +ADOConnection +ADOQuery +DataSetProvider
Client : SocketConnection + ClientDataSet我在Server 的ADOQuery里设定了SQL语句客户端后能查询与修改里面的记录。
但能不能从客户端修改服务端的Sql语句?
我的方法:
ClientDataSet1->Close();
ClientDataSet1->CommandText="select * from SalesOrder where 订单号 like 'A%'";
ClientDataSet1->Active =true;出错信息:CommandText Change are not allow .请问各位有什么高见,一定要帮我啊! 

解决方案 »

  1.   

    在RDM 中对应的DatasetProvider属性options 中AllowCommandText:=True;就行了
      

  2.   

    AllowCommandText:=True;............
      

  3.   

    多谢各位回答,容许我问多两个问题:1.
    有关数据更新的,我做了个left join查询:select A.物品编号,B.品名
    from   A left join B on (A.物品编号=B.物品编号)听说可以从中间层自己写数据更新的SQL,因而我想当客户端对这个查询的结果进行修改时,它的修改、删除与增加等操作只涉及表A。也就是说与BDE的updateSQL相似。
    在BDE上的修改SQL可以这样写update A
    set A.物品编号 = :A.物品编号
    where A.物品编号 = :A.物品编号但在中间层如何设置?SQL语句如何写呢?希望大家指教,且尽可能每步的设置都写上,因为我是新手啊!2.请问用SocketConnection与DCom有什么不同与各方的优缺点?Socket是以TCP/IP做协议应该可以客户端通过internet访问服务器,请问DCom能否通过internet访问服务?
      

  4.   

    1。服务层:ADOQuery+DataSetProvider+UpdateSQL,设置ADOQuery的UpdateObject为UpdateSQL,然后在UpdateSQL的InsertSQL,DeleteSQL,ModifySQL里书写更新A表达SQL。客户端ClientDataSet1更新就行了。
    2。SocketConnection需要运行scktsrvr程序;DCom需要在应用服务器注册应用服务程序。
      

  5.   

    http://www.pcbookcn.com/content.asp?page=2&classid=5&Nclassid=&order=&updown=
    http://www.pdown.net/book.asp?page=8&classid=9&Nclassid=44&order=&updown=
    《Delphi_5.x_分布式多层应用系统篇》不错,推荐。
      

  6.   

    ADOQuery好像不能用 UpdateSQL啊!
      

  7.   

    客户端的clientDataset可以对你提到的数据集进行操作ClientDataset1.Edit;
    ClientDataset1.FieldByName('fff').asinteger:=3;
    ClientDataset1.Post;
    ClientDataset1.applyUpdates;
    在中间层adoQuery1的字段你不愿修改的设置属性readonly:=True
    这样你可以在自由地确定哪些字段在客户端可以修改
      

  8.   

    用 CommandText 写 SQL 语句
    CommandText:='update A set A.物品编号 = :A.物品编号 where A.物品编号 = :A.物品编号'
    Params.ParamByName('A.物品编号').value:=...;