2013-11-20 38 views
1

我有Access數據庫與表[tblManipulate]與用數據填充以下四個字段:在MS-ACCESS使用「查找」表更新查詢

[tblManipulate].[Name] 
[tblManipulate].[Description] 
[tblManipulate].[Price] 
[tblManipulate].[Account code] 

我也有一個150項描述表稱爲[tblDescLookup],需要像查找表一樣使用,以便操作帳戶代碼。例如條目如下:

[tblDescLookup].[Description Lookup] [tblDescLookup].[Account Code Result] 
*demonstration*       10000 
*coding*        12000 
*e-mail*        13000 

什麼是走在[tblManipulate]每個記錄並檢查[tblManipulate] [說明]字段反對[tblDescLookup]的最佳方法[說明查詢],分配。如果發現「喜歡」匹配,帳戶代碼結果到原始表中?

在我看來,這似乎是Access中不是最佳工具的實例之一,但這是我被指示使用的。我將不勝感激任何幫助或見解(或替代品!)。謝謝!

+1

似乎對* 「[tblManipulate]。[說明]反對[tblDescLookup]字段。[說明查找]」 *,你想有一個'Like'比較,而不是精確匹配。這是絕對的要求嗎? – HansUp

+0

是的,我想要一個「比較」。填充[tblManipulate]描述字段的個人使用關鍵字,但不一致。 [tblDescLookup]。[帳戶代碼結果],[tblManipulate]。[帳戶代碼] = [賬戶代碼])' – Rot

+0

給他們一個帶組合框的表單來輸入'[tblManipulate]。[Description]'...那麼他們只會輸入有效值,你可以使用精確匹配(好)而不是'Like'(不太好)查找。 – HansUp

回答

1

這樣的事情應該爲你做。

Dim Description As String 
Dim lookupDescription As String 

Dim rs As DAO.Recordset 
Set rs = CurrentDb.OpenRecordset(SELECT * FROM tblManipulate) 

If Not (rs.EOF And rs.BOF) Then 
     rs.MoveFirst 'good habit 

     Do Until rs.EOF = True 


     Description = rs("Description") 

     Dim rsLookUp As DAO.Recordset 
     Set rsLookUp = CurrentDb.OpenRecordset(SELECT * FROM tblDescLookup) 


       If Not (rsLookUp .EOF And rsLookUp .BOF) Then 
         rsLookUp .MoveFirst 'good habit 

         Do Until rsLookUp.EOF = True 

         lookupDescription = rsLookUp("Description Lookup") 

         If() Then 'match criteria 
         'assign value 
         End if 

         rsLookUp.MoveNext 
         Loop 

        Else 
          MsgBox "No records in the recordset." 
         End If 


       rs.MoveNext 
      Loop 


      Else 
       MsgBox "No records in the recordset." 
End If 
+0

這很好用!我非常感謝你通過這個想法。非常感謝您的幫助! – Rot

+0

很高興爲您提供幫助。在不久之前需要做類似的事情,所以我想我會爲你省去弄清楚它的麻煩。祝你好運! – Makki

0

Oy。這裏你需要一個循環。通過每個記錄

Set rec = CurrentDB.OpenRecordset ("Select * from tblDescLookup") 

然後循環和運行方式查詢:我會在記錄開拓tblDescLookup

Do While rec.EOF = False 

    Set rec2 = CurrentDB.OpenRecordset ("Select * from rec where Description like '" & rec("Description Lookup") & "'") 

    rec.MoveNext 

Loop 

或者,也許你需要做一個更新語句來代替?我不能把它寫在我頭頂,但你明白了。

0

你有沒有試過類似的東西?

Update tblManipulate as t1 
Set [Account Code] = (Select [Account Code Result] from [tblDescLookup] where [Description Lookup] = t1.[Description]) 
+0

跟宮本武蔵的回答一樣,我需要做一個'比較'。有沒有一種方法可以使用'like'而不是平等的? – Rot

+0

如果我正確理解了你的話,你應該能夠在上面的SQL中爲=替換'like'。你能給我一個例子嗎? –