如何在Dbgrid中修改编辑多个表连接查询结果(200分)

  • 主题发起人 主题发起人 dj
  • 开始时间 开始时间
D

dj

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TQuery对多个数据库中的Table进行连接查询,然后用TDbgrid显示查
询结果。但无法使用户在DBgrid中直接修改这个SQL结果。
麻烦专家帮在下解决这个问题,不胜感激!!
 
tquery.requestlive:=true;
 
多表?
有可能查询出来的是视图,当然无法修改。
试试这样:
select table1.x table2.y
from table1 table2
where .........
关键:select字句中明确注明哪个字段来自哪个表。
 
增加一个tupdatesql, 然后query1.updatesql:=updatesql1就可以了:-)
 
cytown, 不可以. updatesql只能改一个表(好象在哪本书上看到过, 说updatesql
支持用';'分隔的多句update/insert语句, 不过没试过). 按delphi的help说, 要
修改多表, 得写OnUpdateRecord事件, 在那里可以修改多个表(也没试过).
 
cytown的方法可行,我试过
 
Another_eYes 讲的对;或者不全对.在李维写的《DELPHI3从入门到精通》上
讲了一个利用多个TUPDATESQL配合更新多表的例子。看看吧,好象操作很是麻
烦,不过不用写程序了。
 
wdq,cytown:

我知道你们说的对,可否再详细一点点?我是一个delphi beginner.

thanks a lot!
 
修改多表是麻烦,哪位试过?
 
修改多表是简单. 我都懒得试. 读一下TDataSet.OnUpdateRecord的help就
知道了嘛.
 
to dj
我和你做类似的事,只是不知为什么显示不出来数据,我用到了数据模块.是否要用事务?抽空帮忙吧.
 
wdq,cytown的方法可行,updatesql只能改一个表,但可要多個updatesql
 
TQuery对n个数据库中的Table进行连接查询,用N个TUPDATESQL控件。一一对应。
在DBGRID保存时,用循环,在循环中,将TQUERY的UPDATEOBJECT依次指向每个TUPDATESQL,并APPLYUPDATE。
 
有一个最笨的方法:
将多表查询的结果保存到一个临时的本地数据库表中,将Tdbgrid连接到此表上,
即可完成修改,修改完成后,用SQL中的Update语句即可更新!
 
多人接受答案了。
 
后退
顶部