据说:
DBGrid1 中修改了记录后,
clientDataSet1的Post方法或点击TDBNavigator的“√”按钮更新数据,事实上只是把数据更新缓存内存中,并没有真正更新到服务器数据源中。要真正
地把修改的数据更新回数据源中,应用程序必须调用TClientDataSet 的ApplyUpdates ... 但我用了: 
clientdataset.applyupdate(-1),clientdataset.applyupdate(0)
最后再从服务器取数据,数据还是老样子现在数据是根本不能提交到服务器上,究竟还有哪些细节的设置!?
拜托了! 对了,我用的INTERBASE,这是否对更新有影响,在中间层是否还需要处理?

解决方案 »

  1.   

    用的是  socketconnetcion  ,数据也的确是按规则输入的,但就是不能将更改应用到数据源怎么没多少人回答?
      

  2.   

    datasetprovider option allowcommandtext 要设为true
      

  3.   

    你在CLIENTDATASET的REROMEERROR(全名我忘了,自己查查),中写SHOWMESSAGE(E。MESSAGE)看看,返回什么错误导致不能保存,可以联系我
      

  4.   

    我也遇到过类似的问题,后来用了一个笨方法,将这些操作(如动态建表,插入记录)全都通过函数用参数传到中间层上来处理,数据是写进去了,但就是不能马上在客户端上显示,为此我也刚提了个问题,大家可以去看看(名为:leeen)。大家给个方法阿。
      

  5.   

    你的中间层的DSP->poincFieldProps设为true了吗?还有你的AppleyUpdates(0)是写的那的?应该写在clientdataset的After post事件里面去啊!如果这样做了,是没有问题的!再就是要按照规则来做!
      

  6.   

    function AppleyUpdates(): Integer; 如果AppleyUpdates函数返回的值不是一,则更新过程发生错误。需要查明。
      

  7.   

    改这个属性即可:
    DataSetProvider1.ResolveToDataSet:=true;
      

  8.   

    是否设置的主键,field的[pfInKey]是否加了
      

  9.   

    SHOWMESSAGE(E。MESSAGE)看了看,
    原来是QUERY READ-ONLY 的更新问题这里我顺便问问:
    我用IBQUERY1 : SELECT * FROM TEST
    然后筛选出来的数据在DBGRID里显示出来,就不能修改了
    应该怎么调整和设置让他能修改呢?我知道,如果从多张表里筛选,那么数据肯定不能修改
    但我是从一张表里筛选,怎么也不行呢?敬候佳音!
      

  10.   

    将连接在IBQUERY1的DSPROVIDER的OPTION中的POREADONLY设置为FALSE
      

  11.   

    将连接在IBQUERY1的DSPROVIDER的OPTION中的POREADONLY设置为FALSE这个我原来就已经做了,还是不行现在是我就用IBQUERY1直接连接INTERBASE,没有datasetprovider(就一层)
    我用IBQUERY1 : SELECT * FROM TEST
    然后筛选出来的数据在DBGRID里显示出来,还是不能修改应该怎么调整和设置IBQUERY1,让他能修改呢?
    还是INTERBASE的固有毛病我知道如果用ADO可能不会有这个问题的