簡體   English   中英

VBA從MS Access獲取值的總和,返回錯誤:沒有為一個或多個參數提供值

[英]VBA obtaining a SUM of values from MS Access, returns error: No Value Given For One or More Parameter

我有以下代碼來檢索訪問字段中的總和。 不斷收到錯誤“沒有為一個或多個參數賦值”。 我假設它很簡單。 我嘗試查找語法,谷歌似乎給了我我已經擁有的東西。 感謝您的幫助。

編輯

Public Sub sum()
Dim cn As Object
Dim rs As Object
Dim strSql As String
Dim strConnection As String
Dim countfrmdb As String
Dim currentmth As String
currentmth = Sheets("Data").Range("f3")  'this has been formatted to get the month name. e.g: Jan. Thats how its in my database.

Set cn = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=data.mdb"
strSql = "SELECT SUM(field_name) As Total FROM Table_name WHERE field_month_name = " & currentmth

cn.Open strConnection
Set rs = cn.Execute(strSql)
countfrmdb = rs.Fields(0)
MsgBox (countfrmdb)

您指示currentmth是包含當前月份的文本值。 因此,當將currentmth添加到WHERE子句而不用引號引起來時,數據庫引擎會認為Jan是參數的名稱而不是文本值。

改變這個...

WHERE field_month_name = " & currentmth

為此...

WHERE field_month_name = '" & currentmth & "'"

解決這類問題的一種好方法是檢查您要求Access執行的SQL語句的實際文本。 Debug.Print對於此目的很有用。

strSql = "SELECT SUM(field_name) As Total FROM Table_name WHERE field_month_name = " & currentmth
Debug.Print strSql 

然后,您可以在“即時”窗口中查看Debug.Print的輸出。 您可以從此處復制語句文本,然后將其粘貼到新的Access查詢的SQL視圖中進行測試。 或者,您可以向我們顯示產生您報告的錯誤的實際語句文本。

根據在此找到的信息: 沒有為必需的參數提供值我要說的是您的Field_Name或table_name的拼寫不正確。 您可以通過有意地輸入錯誤的字段名稱來進行測試,並且會遇到相同的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM