2014-05-15 47 views
1

我試圖將一些vba函數的值傳遞給SQL。在SQL IN子句中使用VBA的MS Access

這是我的SQL

​​

這是VBA函數的定義:

Function getList(Measure As String) As String 

當我打電話的功能,我得到:1,2,3爲一個字符串。

如果我運行SQL作爲

SELECT * 
FROM Hierarchy3 
WHERE ID IN (1,2,3); 

它工作正常,但兩者結合不起作用。所以我猜字符串類型是錯誤的,你能幫忙嗎?

+0

這是一個Access SQL查詢還是一個在VBA代碼中形成的查詢? – Yoh

+0

這是一個真正的Access SQL查詢 – Mike

回答

1

你的問題是你的查詢不能像你期望的那樣工作。你的函數返回一個字符串,所以執行的查詢是:

SELECT * 
FROM Hierarchy3 
WHERE ID IN ("1,2,3"); 

注意引號。基本上你將一個整數與一個字符串進行比較,因此不會返回任何結果。

你可以做的是使用InStr函數,看看是否能夠ID字符串中找到:

SELECT * 
FROM Hierarchy3 
WHERE INSTR(getList("1 and 2"),ID); 

現在將工作,因爲ID 1可以將字符串「1,2中找到, 3「,因此INSTR功能將返回可找到的位置。