我已經爲Access 2007中的學校項目編寫了此VBA模塊,並且它在Visual Basic編輯器中的立即窗口中正常工作。但是,當我在查詢(SQL)中使用它時,該值不會顯示。我不知道爲什麼。 這裏是模塊代碼:訪問SQL中的VBA的奇怪問題
Option Compare Database
Function LoopIngredients(itemName As String) As Long
Dim strSQL As String
Dim rst As Recordset
Dim field As field
Dim temp As Boolean
strSQL = "Select Table2.[Ingredient], Table2.[Price] From Table2"
'open the results read-only
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenForwardOnly)
If rst.RecordCount > 0 Then
'rst.MoveFirst
Do While Not rst.EOF
For Each field In rst.Fields
If field.Name = "Ingredient" Then
temp = False
If InStr(itemName, field.Value) Then
temp = True
Debug.Print ("Name " & field.Value)
End If
End If
If field.Name = "Price" Then
If temp Then
LoopIngredients = LoopIngredients + field.Value
Debug.Print ("Price " & LoopIngredients)
End If
End If
Next field
rst.MoveNext
Loop
End If
End Function
這裏是在即時窗口輸出:
LoopIngredients( 「奶酪和番茄三明治」)
名稱奶酪
價格1
名稱番茄
價格3
下面是SQL查詢:
SELECT Table1.ID, Table1.[Item Name], LoopIngredients([Item Name]) AS Price, Table2.ID, Table2.Ingredient, Table2.Price
FROM Table1, Table2;
任何幫助,將不勝感激。
對不起,我不太清楚你的意思。即使我像這樣調用LoopIngredients(「奶酪三明治」)AS Price函數,它仍然不起作用。至於InStr方法,我試圖看看循環中的當前成分(單獨的表格)是否包含在項目名稱中。例如。 「奶酪和番茄三明治」由奶酪和番茄組成。感謝您的回覆。 – Geniass 2010-08-26 13:35:47