2017-07-25 44 views
0

我知道給定值,有很多答案在那裏爲這個問題應該是微不足道的,但我沒有找到合適的人。這裏是我的問題: 我打開一個記錄集與以下select語句:VBA訪問:沒有爲一個或多個必需參數

SELECT twinecellar.produktnavn, twinecellar.land, 
twinecellar.produkttype, twinecellar.år, 
twinecellar.antall, twinecellar.poeng, 
twinecellar.Picture, twinecellar.KR, 
twinecellar.Poengsum, twinecellar.Sum 
FROM twinecellar 
WHERE (((twinecellar.land)=forms!fmainview!list13) 
    And ((twinecellar.produkttype)=forms!fmainview!list15)) 
ORDER BY twinecellar.poeng; 

在immidiate窗口,我看到該列表13包含「法國」和列表15包含「紅」 當我創建一個新的用這個語句查詢,它的工作,但是,在rst.Open gsStrQuery我得到這個錯誤。 gsStrQuery包含選擇字符串。

下面是代碼:

Dim conn As ADODB.Connection 
Dim rst As ADODB.Recordset 

Set conn = CurrentProject.Connection 
Set rst = New ADODB.Recordset 

rst.CursorType = adOpenDynamic 
rst.ActiveConnection = conn 
rst.Open gsStrQuery 

人在那裏有關於這個問題的一個好主意?

+0

?gsStrQuery'您能得到什麼? – Vityata

+1

同樣的原因如下:https://stackoverflow.com/a/32118340/3820271 - 但這個問題的答案有DAO的解決方案。您需要設置參數。 – Andre

+0

請在VBA中顯示* gsStrQuery *的任務,這對您的問題至關重要。 – Parfait

回答

1

當你建立你的SQL字符串,拼接的「參數」值到字符串。

gsStrQuery = "SELECT twinecellar.produktnavn, twinecellar.land, " & _ 
       "twinecellar.produkttype, twinecellar.år, " & _ 
       "twinecellar.antall, twinecellar.poeng, " & _ 
       "twinecellar.Picture, twinecellar.KR, " & _ 
       "twinecellar.Poengsum, twinecellar.Sum " & _ 
      "FROM twinecellar " & _ 
      "WHERE (((twinecellar.land)= '" & forms!fmainview!list13 & "') " & _ 
       "And ((twinecellar.produkttype)= '" & forms!fmainview!list15 & "')) " & _ 
      "ORDER BY twinecellar.poeng;" 

這樣,在嘗試打開查詢之前,將參數值硬編碼到字符串中。

(另請注意:我說在你的參數單引號,表示他們是字符串。)

(另外還要注意:& _是VBA行繼續讓你的SQL字符串會連接正確這可以讓你有一個可讀SQL代碼多數民衆贊成很好地縮進。)

________________________________

也有使用當前gsStrQuery和分配參數值ADO記錄集的方式。 (但是,我發現上面的替代方法更容易回去的時候審查代碼閱讀。唯一的缺點是你必須每個參數的變化的時間來重建你的SQL字符串。但是,開銷是最小的非複雜的查詢。)

但是,如果你真的想使用ADO參數,你可以找到一個有用的描述here.

希望幫助:)

當你在即時窗口`寫
+0

Abraxascarab,我印象深刻!關於你的努力和你的建議。我將你的聲明發布到我的程序中,並且它可以工作。非常感謝!現在,我將深入到細節,並試圖瞭解爲什麼我自己的SELECT語句,這是由Access查詢工具創建的,在這種特定情況下沒有工作,而你的工作。你一定是個天才! – miwi

+0

現在我已經調查了一下。我不明白的錯誤了,但我沒有得到任何記錄,因爲後面的單引號作形式!fmainview!list13爲一個字符串,缺少字段的內容。你有什麼想法嗎? – miwi

+0

我的觀點是,我無法對參數進行硬編碼,因爲它們來自列表框中的選項,如list13。我想有可能有字段作爲參數,而不僅是硬編碼的字符串? – miwi

相關問題