DBGRID中显示的是一个SQL查询出的结果涉及几张表,我怎么来把修该的数局写回到表里??????谢谢!!!!!

解决方案 »

  1.   

    取记录时字段来自哪个表,写回去也就写那个表,思路是这样的,如果用单一的DBGrid来实现也许有点困难
      

  2.   

    估計你用的是BDE組件!如果是如此那麼就用BDE所配套UPDATASQL組件來更新數據
    在UPDATASQL組件裡寫好更新語句!再將你的需要更新的數據集如QUERY的UPDATAObject
    的屬性指向該UPDATASQL組件,cachedupdate設為TRUE,到時你修改了DBGRID的數據後
    隻要調用該BDE數據集的ApplyUpdates和CommitUpdates方法,就能把相對應的修改提交給數據庫了!
      

  3.   

    方法一,用视图更新
    sqlserver2000支持视图更新,但delphi ado解析的语句一般不正确,建议用视图+视图触发器的方法解决一般的多表查询更新问题方法二,缓存更新,自己解析缓存数据包adoquery.recordset
    对缓存数据包数据进行解析,生成相应的更新语句.执行这些语句
    adoquery.FilterGroup 有这方面的支持,不过delphi7中用ADOQuery1.FilterGroup := fgPredicate;老是有问题,还没解决.
    自己遍历每个记录每个字段的oldvalue\newvalue等.
      

  4.   

    将联合查询写为数据库的视图
    因为ORACLE8i数据库支持数据库视图
    详细可以参看oracle8i的说明
      

  5.   

    对不起
       将联合查询写为数据库的视图
    因为ORACLE8i数据库支持数据库视图的触发器,可以将相应改变写入相应的表
    详细可以参看oracle8i的说明