2016-06-21 67 views
1

我想要做的是搜索Customer ID的Customer表「CUSLST」,並將此搜索與另一個表進行比較以查看是否存在是任何命中。如果沒有命中,那麼我想那個客戶ID添加到其他表「tblContact」我是搜索的命中如何搜索一個表中的字段值,並查看該值是否在VBA中的另一個表中

Private Sub Command3_Click() 
Dim rcd As Recordset 
Dim rcd_Cust As Recordset 
Dim strCriteria As String 

Set db = CurrentDb 

Set rcd = db.OpenRecordset("tblContact") 
Set rcd_Cust = db.OpenRecordset("CUSLST") 


rcd_Cust.MoveFirst 
With rcd_Cust 
    Do Until rcd_Cust.EOF 
     strCriteria = rcd![Customer Number] 
     If (DoCmd.FindRecord(strCriterial, , True, , True)) = Null Then 
      rcd.AddNew 
      rcd![Customer Number] = rcd_Cust![Account Code] 
      rcd.Update 
      rcd_Cust.MoveNext 
     End If 
     rcd_Cust.MoveNext 
    Loop 
End With 
MsgBox "I'm Done" 
End Sub 

目前我得到一個錯誤說:「編譯錯誤:預期函數或變量「 對於VBA,我很新,所以很抱歉,如果這是一個愚蠢的問題。

老實說,我甚至不確定我的邏輯是否正確。

任何幫助將不勝感激。

感謝

+0

你有沒有看過通過SQL來處理這個問題,使用更新語句和從連接派生的值? '從tbl_contact中選擇customer_number,在tbl_Contact.Customer_number = custlist。[賬戶代碼]'左邊加入CUSTLIST'類似的東西,未經過測試。 –

+0

我已經想過了,但老實說,這種方式會更容易。我會研究一下,謝謝 – Pokeastuff

+0

你可以在查詢設計器中做到這一點,打開兩個表格,只需將你正在查看的字段拖動到你正在檢查的另一個表格上,然後與標準一起玩,例如爲空將顯示缺少的。正確的做法是使用'EXISTS',這對你來說是一件好事。總是想想,對於100萬客戶來說會是什麼樣子,想想這將如何工作,你正在編寫SQL編碼的代碼。 –

回答

0

這可以使用一個單一的查詢解決:

創建一個新的查詢設計,並打開SQL視圖,則白:

INSERT INTO tblContact (Customer Number) 
SELECT [Account Code] from CUSLST 
WHERE [Account Code] NOT IN (SELECT [Customer Number] from tblContact) 

運行和享受!

+0

謝謝伊萬!代碼運行,但它給了我0行附加到tblContact的響應。我也改變了一下。 'INSERT INTO tblContact(CustomerNumber) SELECT CUSLST [Account Code] WHERE [Account Code] NOT IN(SELECT [CustomerNumber] from tblContact);'你碰巧知道什麼可能是錯的? – Pokeastuff

+0

首先從CUSLST WHERE [Account Code] NOT IN(SELECT [CustomerNumber] from tblContact)執行'SELECT [Account Code];'預覽插入的行。並評論你發現的內容。 –

+0

@Pokeastuff,更改我的查詢回答 –

相關問題