ADO连接数据库,多表查询显示结果(SELECT MC=(SELECT MC FROM ZD_KS WHERE BM=KSBM),* FROM ZD_RY) 在DBGrid 上。
请问题大家如何做到修改表的多条记录后,按保存写入数据库。现在的情况是我修改一个字段后记录向下移后就马上只动写入数据库了。还有为什么有的连接数据库程序打开表后就只动产生了一个临时文件。

解决方案 »

  1.   

    dbgrid是数据感知控件,当然会有这样的问题,你看到过大的项目用DB控件的吗?最多用来显示一下数据,不会直接在上面进行修改,因为你很多东西没法控制。
    现在明白我要说什么了?解决方法有两个。、
    1。用STRINGGRID代替,所有的查询显示,数据操作都用代码实现。这是好的办法,但估计你嫌麻烦。
    2。现实的做法,对查询的修改编辑放在其它窗口上用普通的EDIT完成,然后用代码往DB里面写。
      

  2.   

    SELECT MC=(SELECT MC FROM ZD_KS WHERE BM=KSBM),* FROM ZD_RY)
    -----------------------------------------------------------
    这句话我看得不舒服,写成这样如何
    SELECT A.MC,B.* FROM ZD_KS A,ZD_RY B WHERE A.BM=KSBM
    :)请问题大家如何做到修改表的多条记录后,按保存写入数据库。现在的情况是我修改一个字段后记录向下移后就马上只动写入数据库了。
    ------------------------------------------------------------------------
    你用的导航条(DBNavigator)?不建议用它。你可以自己写代码控制dataset数据集。对于你那个修改表的多条记录后,按保存写入数据库你可以用事务进行处理。就是用ADOCONNECTION自带的begintran  committran rollbacktran。
    至于要多选的话修改DBGRID的一个属性就可以多选,然后有一个book(好像是这个名称,手边没有Delphi,见谅^_^)属性记录你选中的记录。最后用上面说的事务处理写到数据库里。还有为什么有的连接数据库程序打开表后就只动产生了一个临时文件。
    ----------------------------------------------------------------
    你是不是指的Access数据库会在使用时候出现一个后缀名是.ldb的文件阿?这个是正常的