【发布时间】:2012-12-28 21:08:44
【问题描述】:
我正在开发一种数据转换实用程序,它可以将数据从一个主数据库推送到多个不同的数据库。该实用程序本身不知道数据如何保存在目标(表结构)中,但我想提供编写一个 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
还有许多其他表中的记录的其他连接,但我不担心附加到那些。我只担心同时附加到“小”和“详细”表。
这样的事情在 ADO 查询中可能吗?我愿意以任何必要的方式调整和修改 SQL 语句以使其成为可能。我有一种不好的感觉,虽然这是不可能的。
兼容性:
- SQL Server 2000 到 2008 R2
- 德尔福 XE2
【问题讨论】:
-
你可以把整个事情写成一个 SQL 存储过程,然后通过 ADO 从你的 Delphi 程序中执行。
-
似乎在一定程度上是有可能的,使用我的两张表无论如何都匹配在一起。当我介绍其他查找表时,它开始变得混乱,并且不允许我设置这些值。仍在试图弄清楚我可以在多大程度上修改这些数据。
-
还有确保主键字段(身份规范)完美匹配的问题。如果我决定写入其中任何一个,我必须确保我追加到两个表中。
-
@Jerry Dodge:您对 BDE 的评论是错误的:可以完全控制返回的字段。您可能一直在考虑“实时查询”:无法编辑基于从多个表中提取的数据的查询。
-
我从来没有真正使用过我提到的 BDE,这只是我听说的。我只是在使用 ADO。
标签: sql-server delphi delphi-xe2 ado tadoquery