好的。。我做的程序是用来做产品的部品表的当我输入部品的代码时,程序自动根据代码查询元件库,调出该部品的部品描述,所以我要用一个Clientdataset调出部品表,另用一个用于查询部品库。现在的问题就是:部品表的数据经修改后必须更新回库中,假如我不open用于查询的TClientdataset则可以进行数据的更新。但一旦open 了这个Clientdataset后,部品表的数据就无法更新回数据库了明白了吗??

解决方案 »

  1.   

      if (ClientDataSet1.ChangeCount > 0) then
          ClientDataSet1.ApplyUpdates(-1);是不是要更新一下的缘故?!
      

  2.   

    看了半天没懂你说啥,你到底要更新哪个表(是部品表,还是元件库??),听你的意思是部品库调用元件库(调用元件库时,同时也要修改它吗?),你调用ClientDataSet.ApplyUpdates(0)应该能更新数据,除非你属性设置有问题!
      

  3.   

    还不懂吗??我再说一下:产品的部品表(partslist)里的每个部品都是从元件库(partslibrary)里调出来的,部品表里的所有部品可组装成为一个产品,(因为不同的产品可能用到相同的部品),现在是要把做好的部品表更新进数据库中,
    我用的是Clientdatase.applyupdate(0);属性设置:fatchondemand:=false..(服务器为无状态)packetcount:=50,服务器的datasetprovider 的oncommandtext:=true;其余为默认设置。。
      

  4.   

    你要是不急的话,我晚上试试看.
    我想你应该设置了LOOKUP关系,问题可能就在这!
      

  5.   

    我用SocketConnection1我可以更新,可要是连续更新三次就出错,提示“grid index out of range”这是为何?
      

  6.   

    to dana(dana)
     使用单步运行,看看是执行到那里出错的,应该是你的程序用问题。。不关更新次数的事
      

  7.   

    你使用的是应用服务器上有几对TDataProvider,TADOQuery,如是一对的话就应该加一个,
    因为当TCLIENTDATASET使用APPLYUPDATE()更新是会使用原TADOQquery中的语句到数据库
    中找回原来那条记录因为虽然你使用了两个TCLIENTDATASET控件但当第一个TCLIENTDATASET
    控件APPLYUPDATE是它使用的那一条语句已经被你的第二个TCLIENTDATASET控件更换了所以
    它找不回原有记录导致更新失败。
      

  8.   

    你使用的是应用服务器上有几对TDataProvider,TADOQuery,如是一对的话就应该加一个,
    因为当TCLIENTDATASET使用APPLYUPDATE()更新时会使用原TADOQquery中的语句到数据库
    中找回原来那条记录,因此当第一个TCLIENTDATASET控件APPLYUPDATE时它使用的那一条语句已经被你的第二个TCLIENTDATASET控件更换了所以它找不回原有记录导致更新失败
      

  9.   

    to WangYan(一研) 
      是一对TDataprovider和TADOQuery...这么说必须在服务器上必须增加这两个东东???
    但问题我在服务器上增加一个TSocketconnection也可以更新呀,他应该也还是通过同一个TADOQ
    uer来更新的呀为什么又可以呢??
      

  10.   

    我曾经碰到类似的问题,原因与WangYan(一研)兄所言相似,一个CLIENTDATASET更新数据时,那数据已被其它CLIENTDATASET或服务端的东东改变,所以更新失败,你可在程序中获取CLIENTDATASET更新时返回的错误信息,据此可以比较容易找到问题所在。
      

  11.   

    问题我在服务器上增加一个TSocketconnection也可以更新呀,他应该也还是通过同一个TADOQ
    uer来更新的呀为什么又可以呢?? 
      

  12.   

    问题我在客户端上增加一个TSocketconnection也可以更新呀,他应该也还是通过同一个TADOQ
    uer来更新的呀为什么又可以呢??  
    前面写错了:( 
      

  13.   

    出错的原因这在这句,ClientDataSet1.ApplyUpdates(-1);弄不明白是为什么
      

  14.   

     用Clientdataset1.applyupdate(0)一样是不行的。那你说原因是什么呢