2

再次回来!所以我目前正在尝试在按下按钮后以编程方式更新表格(Table2)。我希望 Table2 与另一个表(Table1)完全相似。我正在进行这项工作,因为 Access 不允许双重关系,我需要创建一个。因此,我将有两个包含所有联系信息的表格。

我尝试删除 Table2,然后创建 Table1 的另一个副本并将其保存为 Table2。如果 Microsoft Access 没有抛出错误,这是可行的,因为我正在删除已建立关系的表。所以我然后尝试以编程方式删除然后创建适当的关系。然而,事实证明这是一项乏味的练习。对我的口味来说有点太乏味了。

我的下一个想法是创建一个附加查询,它会自动查找两个表之间的差异并相应地更新 Table2。问题是我不知道如何为这样的追加查询构造 SQL 语句。还有一种更简单的方法可以使用我缺少的 VBA 来做到这一点吗?在此先感谢您的帮助!

4

2 回答 2

3

没有必要去解决所有这些麻烦。您可以在 MS Access 中建立双重关系。只需根据需要将表添加到关系设计窗口中,您将获得 Table1、Table1_1、Table1_2 等,但它们都只是 Table1 的别名。您现在可以根据需要添加自联接和任意数量的关系。

像这样:

*People*
PersonID        *People_1*
ManagerID -- >   PersonID
于 2012-07-31T09:01:28.180 回答
1

听起来您可以在不与任何关系发生冲突的情况下追加Table1from Table2。如果这是真的,您可以清空Table2,然后附加 中的所有行Table1

Dim cn As Object
Set cn = CurrentProject.Connection
cn.Execute "DELETE FROM Table2"

如果 Table2 包含自动编号字段,请重置其种子值。

cn.Execute "ALTER TABLE Table2" & vbCrLf & _
"ALTER COLUMN autonum_fld COUNTER(1, 1)"

然后做追加...

cn.Execute _
"INSERT INTO Table2 (autonum_fld, text_field, long_int_field)" & vbCrLf & _
"SELECT autonum_fld, text_field, long_int_field" & vbCrLf & _
"FROM Table1;"

...或者如果两个表结构相同,您甚至不必列出字段名称...

cn.Execute "INSERT INTO Table2" & vbCrLf & _ 
"SELECT *" & vbCrLf & _
"FROM Table1;"

最后...

Set cn = Nothing

AFAICT,这可以工作。但是,我不了解您的问题的背景细节,例如“访问不允许双重关系”。所以我可能完全不合时宜。

于 2012-07-31T04:34:06.543 回答