VBA obtaining a SUM of values from MS Access, returns error: No Value Given For One or More Parameter
VBA obtaining a SUM of values from MS Access, returns error: No Value Given For One or More Parameter
我有以下代码可以从访问字段中检索总和。
不断收到错误 "No Value Given For One or More Parameter"。我假设它很简单。我试着查找语法,google 似乎给了我已有的东西。感谢您的帮助。
编辑
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)
根据此处找到的信息:No value given for the required parameter 我会说您的 Field_Name 或 table_name 拼写不正确。您可以通过故意输入错误的字段名称来测试它,您将得到与您得到的相同的错误。
您指出 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
然后您可以在即时 window 中查看 Debug.Print
的输出。您可以从那里复制语句文本并将其粘贴到新 Access 查询的 SQL 视图中以进行测试。或者您可以向我们展示产生您报告的错误的实际语句文本。
我有以下代码可以从访问字段中检索总和。 不断收到错误 "No Value Given For One or More Parameter"。我假设它很简单。我试着查找语法,google 似乎给了我已有的东西。感谢您的帮助。
编辑
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)
根据此处找到的信息:No value given for the required parameter 我会说您的 Field_Name 或 table_name 拼写不正确。您可以通过故意输入错误的字段名称来测试它,您将得到与您得到的相同的错误。
您指出 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
然后您可以在即时 window 中查看 Debug.Print
的输出。您可以从那里复制语句文本并将其粘贴到新 Access 查询的 SQL 视图中以进行测试。或者您可以向我们展示产生您报告的错误的实际语句文本。