如何在使用query1.datasource传递sql参数时可用事物处理来修改数据库主表的明细表(100分)

  • 主题发起人 主题发起人 LSS
  • 开始时间 开始时间
L

LSS

Unregistered / Unconfirmed
GUEST, unregistred user!
a.db为主表code char(6) name char(20)
b.db为明细表code char(6) name char(20)
a.code->b.code
query1.sql.text:='SELECT code,Name FROM "a.db"';
query2.sql.text:='SELECT Name FROM "b.db"' WHERE code=:code';
datasource1.datset:=query1;
datasource2.datset:=query2;
query2.datasource:=datasource1

修改a.db事件:
Database1.StartTransaction;
if (修改字段窗口.ShowModal=mrok) then Database1.Commit else Database1.Rollback;
query1.Refresh;

修改字段窗口上有dbedit控件,连接datasource1

当query1.active:=true
query2.active:=true时,commit和Rollback结果正确
当query1.active:=true
query2.active:=false时,Rollback结果和commit结果相同

如何在使用query1.datasource传递sql参数时可用事物处理来修改数据库主表的明细表
 
我也想知道 !
 
为什么没人理我,可以告诉我原因吗
 
大概这个问题又要进箱底了
 
你的query2处在非活动状态,Tquery.DataSource是一个非活动集,
是不是这个原因引起的呢?
 
看你说的 大大一堆, 一看脑袋就乱了,呵呵
 
query2没打开时可以roolback,但一使用datasource设置参数时,就不能roolback了。
 
>当query1.active:=true
> query2.active:=false时,Rollback结果和commit结果相同
~~~~~~~~~~~~~~~~~~~~~~

>query2没打开时可以roolback,但一使用datasource设置参数时,
~~~~~~~
>就不能 roolback了 .


这两个说法是否矛盾?
 
请继续LSS讨论.
 
多人接受答案了。
 
后退
顶部