再次回来!因此,我正在尝试以编程方式在按下按钮后更新表(Table2)。我希望Table2与另一个表(Table1)完全相似。我正在努力,因为Access不允许双重关系,我需要创建一个。因此,我将有两个包含所有联系信息的表格。
我尝试删除Table2,然后创建Table1的另一个副本并将其保存为Table2。这将是有效的是Microsoft Access没有抛出错误,因为我正在删除已建立关系的表。所以我接着尝试以编程方式删除然后创建适当的关系。然而,事实证明这是一项乏味的练习。我的口味有点太乏味了。
我的下一个想法是创建一个追加查询,自动查找两个表之间的差异并相应地更新Table2。问题是我不知道如何为这样的追加查询构造SQL语句。还有一种更简单的方法来使用我缺少的VBA吗?在此先感谢您的帮助!
答案 0 :(得分:3)
没有必要去解决所有这些问题。您可以在MS Access中具有双重关系。只需将表格多次添加到关系设计窗口,就可以得到Table1,Table1_1,Table1_2等等,但它们都只是Table1的别名。您现在可以根据需要添加自联接和多个关系。
像这样:
*People*
PersonID *People_1*
ManagerID -- > PersonID
答案 1 :(得分:1)
听起来你可以从Table1
附加到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,这可行。但是,我不了解您问题的背景细节,例如“ Access不允许双重关系”。所以我可能完全不合适。