0

我有 Database1 和 Database2,我将它们中的每一个添加到一个数据表对象中。现在 Database1 通过 Access 更改,记录可能会添加删除或行数据可能会更改。所以数据库看起来像

+----+----------+-------+-------+
| ID |   Name   | Price | Sales |
+----+----------+-------+-------+
|  1 | ProductA |   453 |    55 |
|  2 | ProductB |    43 |   156 |
|  3 | ProductC |    22 |   161 |
+----+----------+-------+-------+

因此,如果我删除 Product ID=1 的行,我希望它在第二个 Database2 中删除该记录在 Database2 中的更改。

现在的问题是两个数据库中的数据库记录的顺序不同,因此循环可能需要很长时间..例如,如果删除了 ID=4000,则我必须遍历整个数据库才能找到它。

那么除了很多循环之外还有其他解决方案吗?

4

2 回答 2

1

可以在针对 MS Access 连接运行的 SQL 中引用另一个数据库:

 SELECT t1.*, t2.* FROM Table1 t1 
 INNER JOIN [;DATABASE=Z:\Docs\Test.accdb].Table1 t2
 ON t1.ID=t2.ID

从这里,很容易创建查询以查找丢失或更改的记录。

于 2012-08-13T13:25:01.720 回答
1

如果 ID 是该行的标识符,那么我认为您不能安全地按照您的要求进行操作。

鉴于上述表 1 的示例

+----+----------+-------+-------+
| ID |   Name   | Price | Sales |
+----+----------+-------+-------+
|  1 | ProductA |   453 |    55 |
|  2 | ProductB |    43 |   156 |
|  3 | ProductC |    22 |   161 |
+----+----------+-------+-------+

并模拟表 2 的乱序情况

+----+----------+-------+-------+
| ID |   Name   | Price | Sales |
+----+----------+-------+-------+
|  1 | ProductB |    43 |   156 |
|  2 | ProductA |   453 |    55 |
|  3 | ProductC |    22 |   161 |
+----+----------+-------+-------+

如果您从表 2 中删除 ID 2,您最终会从表 1 中删除产品 B(而不是产品 A)。我不认为这是你想要的。

您确定 ID 是这些值的主键吗?

于 2012-08-13T13:56:12.950 回答