to yourlove_dlc(yourlove):
   可是两层结构下可以更新的,我想不会是主码的问题的吧。

解决方案 »

  1.   

    为什么不这样使用呢:
    with ClientDataSet1 do
    begin
      Close;
      DataRequest(SQLString);
      Open; // SELECT语句。如果是INSERT、UPDATE、DELETE等数据写操作,则Execute;
    end;我这样用没有问题的
      

  2.   

    原来我把TQuery换成了TTable就可以了,但是如果要更新的数据分布在多张表那就要用TQuery控件了,这时我又该怎么办呢?
      

  3.   

    也许是因为UpdateMode 不是UpwhereAll,
    你试试看,如果不是,改成UpwhereAll看看,可能就行了/如果用
    with ClientDataSet1 do
    begin
      Close;
      DataRequest(SQLString);
      Open; // SELECT语句。如果是INSERT、UPDATE、DELETE等数据写操作,则Execute;
    end;
    就太麻烦了。数据分布在多张表那就要用TQuery控件
    可以在中间层中使用UpdateSQL组件,产生SQL语句,然后再Update.
    在DatasetProvider的UpdateRecord事件中处理。
      

  4.   

    楼上的问你个问题好么?
    在中间服务层用到TQuery控件如何动态更新SQL语句?
    我在中间层中定义了一个函数用于实现该功能但是总报错 m_Dispatch i= 0.....
    每个TQUERY中的SQL语句不能被动态更新是不是太死板了,还望赐教!!
    只要有人能帮我一定给分80!!
      

  5.   

    如果是主/从表的话,并且主键为TAutoIncField字段,只有提交后才能确定TAutoIncField字段值,在多用户的情况下如何知道提交后当前记录的TAutoIncField字段值?
      

  6.   

    To wujinbao:
    可以按照huchunguo提到的方法来实现啊。with ClientDataSet1 do
    begin
      DataRequest(NewSQLString);
      Refresh;
    end;服务器的Provider的DataRequest事件中加入以下代码:
      Query1.SQL.Clear;
      Query1.SQL.Add(Input);这样可以实现动态改变SQL语句。HI!赶快给分噢...~0~