我用query将数据得出在dbgrid中显示出来,我想在直接在dbgrid中修改数据值,该如何将修改后的值传回给数据库?

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/1454/1454623.xml?temp=.5446894
      

  2.   

    可是它不给我在dbgrid中输入值呀~~~~
      

  3.   

    将dbgrid的options-->dbediting:=true
      

  4.   

    设query.RequestLive:=True;程序运行到这时会出错呀~
      

  5.   

    我还没有等到提交,在设计时设好了query.RequestLive:=True;,一开始运行时就出错
      

  6.   

    query.RequestLive:=True;
    query.edit;
    ````````
    ```
    `````
    query.post;
      

  7.   

    向数据库里面传送数据一共有两种方式。
    第一种是修改完毕以后立即传送到数据路当中
    采用"天煞孤星"的方法。但是这种方法只是适用于select 语句对一个表查询的情况。如果select语句从多个表格中选取了数据。你还要使用updatequery控件生成对相应表格进行修改的语句。以便在
    post以后执行相应的语句。updatequery只能对query查询中的一个数据表格进行更改。如果要对所有的数据表格进行更改。你就要求使用其它的技术。当然也可以用下面的第二种方式。
    第二种采用缓存的方式修改
    你把query的cachedupdate属性置为true那么,你修改的内容在post以后还没有进入数据库,只是在本地内存里面暂存。如果你的query只是针对一个表格进行查询,那么修改完所有的记录之后,你就可以用query.applyupdate将数据写入数据库了。如果你的查询是从多个表格中选出的。你就需要
    在修改完所有的记录之后使用Query.UpdateStatus检查你哪一条纪录修改了,然后,动态生成语句
    修改数据库中的数据表。由于不同的列是从不同的数据表格中选出的,你在这里可以生成多条语句对多个表格进行修改了。但是在关系数据库中不建议进行关联修改,这样做很危险,尤其数据库中采用了强制主外键连接的时候,建议不要多报同时修改。