Jer*_*dge 1 sql-server delphi ado tadoquery delphi-xe2
我正在研究一种数据转换实用程序,它可以将数据从一个主数据库推送到许多不同的数据库.该实用程序本身不知道数据如何保存在目标(表结构)中,但我想提供编写SQL语句以使用具有多个连接语句的复杂SQL查询从目标返回数据.只要数据采用标准化格式,实用程序就可以识别ADO查询中的(字段名称).
我想要做的是修改此ADO查询中的实时数据.但是,由于有多个连接语句,我不确定是否可以这样做.我至少知道BDE(我从未使用过BDE),它非常严格,你必须返回所有字段(*)等.我知道ADO更灵活,但我不知道在这种情况下有多灵活.
TADOQuery当结果包含来自不同表的字段时,是否可以以这种方式修改数据?即使如此,假设我想在末尾添加一条新记录(TADOQuery.Append).它会附加到两个不同的表吗?
我正在选择的实际主表具有一个互补表,该表由相同的主键字段连接,一个是"小"表(简要信息),另一个是"详细信息"表(更多信息用于每个记录)小桌子).所以,一个典型的陈述将包括这样的事情:
select ts.record_uid, ts.SomeField, td.SomeOtherField from table_small ts
join table_detail td on td.record_uid = ts.record_uid
Run Code Online (Sandbox Code Playgroud)
其他表中还有许多其他记录连接,但我并不担心会附加到那些表中.我只是担心附加到"小"和"细节"表 - 同时.
在ADO查询中是否可以这样做?我愿意以任何必要的方式调整和修改SQL语句,以实现这一点.我有一种不好的感觉,虽然这是不可能的.
兼容性:
编辑这些对连接没有影响的字段通常没有问题.追加是......您可以将附加限制为其中一个表
procedure TForm.ADSBeforePost(DataSet: TDataSet);
begin
inherited;
TCustomADODataSet(DataSet).Properties['Unique Table'].Value := 'table_small';
end;
Run Code Online (Sandbox Code Playgroud)
但如果没有Requery,你将无法获得更多.更好的方法是按程序设置值,例如在BeforePost,Requery和Abort中.
如果您的View将是持久的,您将能够使用INSTEAD OF触发器