有三张表,A、B、C,查询是使用SELECT A.A1,A.A2,A.A3,B.B1,B.B2,B.B3,C.C2 FROM A INNER JOIN B ON A.A1=B.B1
INNER JOIN B.B2=C.C1 WHERE A.A1='条件',但我更新时只要更新A表,并不要更新,B表,C表。请教大家使用ADOQUERY,如何解决。万分感谢。
INNER JOIN B.B2=C.C1 WHERE A.A1='条件',但我更新时只要更新A表,并不要更新,B表,C表。请教大家使用ADOQUERY,如何解决。万分感谢。
想要更新,只能再写一个SQL语句。
这样就可以使用Query更新A的字段了
如果觉得这样写不简洁 可以考虑用函数实现 具体写法根据数据库不一样略有不同
形式如下
SELECT A.A1,A.A2,A.A3,getB1(A1) as B1,getB2(A1) as B2 FROM A
但是ADO就没有这么简单。
ADO的联合查询的(指定表)更新方法:
1:用独立的SQL语句更新(其他方法归根结底还是使用的这个方法)。
2:在ADO组件和DataSource组件之间扩展。
方法1(用自带组件,发布时要加入Midaslib单元):TADOQuery+ TDataSetProvider+ TClientDataSet+ TDataSource ;
关键: 1 TDataSetProvider的onGetTableName事件设置要更新的表名称,TableName='xxx';
2 双击TADOQuery设置每个字段的ProviderFlags属性。 方法2(用EHlib组件,功能强大,但是速度慢):TADOQuery+ TADODataDriverEh+ TMemTableEh+ TDataSource ;
这个更类似BDE的UpdateSql功能,双击TADODataDriverEh进行设置就可以了。
adoquery1.Requery()
再使用一个ADOQuery对指定数据进行更新