怎么解决多个对象用一个datasetprovider,用ApplyUpdates(0)更新数据不成功的问题??

解决方案 »

  1.   

    一个对象用一个datasetprovider,用ApplyUpdates(0)更新数据好像经常都不成功。
    苦呀。
      

  2.   

    Tclientdataset提供reconcilerror事件    每一条有错误 都会触发reconcilerror可取得错误 和定义怎样处理这一条
      

  3.   

    关键是datasetprovider的数据集不能被改变,比如你在客户端传了个select 语句什么的,改变了datasetprovider的数据集
      

  4.   

    DataSetProvider有一个事件OnGetTableName,用来设置要把当前数据更新到的表名称。
      

  5.   

    再此需要注意的是尽量的不去强制的用CommandText或是SQL给其值,并再次更新,因为它是动一牵多的。
      

  6.   

    增加一个问题:
    ClientDataSet作为客户端数据集通过SocketConnection连接到应用服务器,通过应用服务器的DataSetProvider来获取数据,取得数据以后为了减少应用服务器的连接数量故意将SocketConnection和应用服务器的连接断开,ClientDataSet中的数据更改了以后想要提交回数据库,用ClientDataSet.ApplyUpdates(-1),此时会出现无法提交的错误,错误提示好象是“无法定位Sql”(记不太清楚了)。是什么原因,如何解决,请各位高手赐教。
      

  7.   

    诸位高手也可以到
    http://expert.csdn.net/Expert/topic/2051/2051416.xml?temp=.7988245
    展开讨论,本人有100分送上。
      

  8.   

    如果在RemoteDataModule上使用了多个DataSetProvider,则一定要再增加一个Session控件(在BDE面板上),并且要设置其AutoSessionName属性为True。这是俺多次痛苦失败后试验出来的。
      

  9.   

    在 ClientDataSet 的 BeforeApplyUpdates 事件中,设置 OwnerData 来区分当前是哪一个 ClientDataSet在 DataSetProvider 的 BeforeApplyUpdates 中,取得 OwnerData 的值
    在 DataSetProvider 的 BeforeUpdateRecord 中,根据 OwnerData 的值来更新相应的数据库表