2012-07-31 61 views
2

回來了!所以我目前正在試圖以編程方式有一個表(表2)更新後按下按鈕。我希望Table2類似於另一個表(表1)。我正在經歷這種努力,因爲Access不允許雙重關係,我需要創建一個。因此,我將有兩張包含所有聯繫信息的表格。自動更新/複製在Microsoft Access的表VBA

我試圖刪除表2,然後創建表1的另一個副本,並將其保存爲表2。這會工作是因爲我刪除已建立關係的表,Microsoft Access沒有拋出異常。於是我嘗試以編程方式刪除,然後創建適當的關係。然而,這是一個乏味的練習。我的口味太乏味了。

我的下一個想法是創建一個追加查詢自動查找兩個表和表2的更新相應的差異。問題是我不知道如何爲這樣的追加查詢構造SQL語句。還有沒有更容易的方法來使用我缺少的VBA來做到這一點?在此先感謝您的幫助!

+0

什麼是 「雙重關係」? – sasfrog 2012-07-31 08:10:34

回答

3

有沒有必要去所有這些麻煩。您可以在MS Access雙重關係。只需將表格按需要添加到關係設計窗口中,您就可以獲得Table1,Table1_1,Table1_2等等,但它們都只是Table1的別名。您現在可以添加自我連接和儘可能多的關係。

像這樣:

*People* 
PersonID  *People_1* 
ManagerID -- > PersonID 
1

聽起來好像你可以從Table1Table2追加沒有任何關係的任何違反。如果這是真的,你可以空出Table2,那麼所有的行從Table1追加。

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

如果表2包含自動編號字段,請重置其種子值。

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,即可以工作。但是,我不明白你的問題的背景細節,例如「訪問不允許雙重關係」。所以我可能完全不符合標準。

相關問題