[英]MS Access runtime error '3061' too few parameters expected 2
I have been playing about with this vba/sql code for a while now and I cant figure out why I keep getting the error 'MS Access runtime error '3061' too few parameters expected 2', Is there something I am missing?. 我一直在玩这个vba / sql代码已有一段时间了,我无法弄清楚为什么我总是收到错误消息“ MS Access运行时错误'3061'预期参数2太少”,我缺少什么吗? I am trying to count how many records are in reviews_programme table with a schedule of 'B' (Which is part of a joined table that is BFMA_Tasklist and joined on the task field), which is between 2 dates which are input from a form.
我试图计算在带有“ B”计划的“ reviews_programme”表中有多少条记录(这是BFMA_Tasklist的联接表的一部分,并在任务字段上联接),该表介于2个从表单输入的日期之间。 The result will then be displayed in a textbox on the form.
结果将显示在表单上的文本框中。
Private Sub cmdstats_Click()
Dim sSQL As String
Dim db As Database
Dim rs As DAO.Recordset
sSQL = "SELECT Count(*) AS [CountOfScheduleB] " & _
"FROM [BFMA_TaskList] INNER JOIN [Reviews_Programme] ON [BFMA_TaskList].[Task] = [Reviews_Programme].[Task] " & _
"WHERE [BFMA_TaskList].[Schedule]=""B"" AND [Reviews_Programme].[Planned_Date] Between Me![txtstatsfrom] And Me![txtstatsto];"
Set db = CurrentDb
Set rs = db.OpenRecordset(sSQL)
If rs.RecordCount > 0 Then
Me.Text2 = rs![CountOfScheduleB]
Else
Me.Text2 = "N/A"
End If
Set rs = Nothing
Set db = Nothing
End Sub
Any help will be greatly appreciated. 任何帮助将不胜感激。 Thank you.
谢谢。
Try this: 尝试这个:
sSQL = "SELECT Count(*) AS [CountOfScheduleB] " & _
"FROM [BFMA_TaskList] INNER JOIN [Reviews_Programme] ON [BFMA_TaskList].[Task] = [Reviews_Programme].[Task] " & _
"WHERE [BFMA_TaskList].[Schedule]=""B"" AND [Reviews_Programme].[Planned_Date] Between #" & Format(Me![txtstatsfrom],"mm\/dd\/yyy") & "# And #" & Format(Me![txtstatsto],"mm\/dd\/yyy") & "#;"
1st of all, where is currentDB? 首先,currentDB在哪里? u need make db connection for this before call its table.
您需要为此建立数据库连接,然后再调用它的表。
2nd i think is 'B' is enough no need ""B"" 第二我认为“ B”就足够了,不需要““ B””
3th u need to used '#' as date parameter. 第三,您需要使用“#”作为日期参数。 and format the text cos we all know all text is string.
并格式化文本cos,我们都知道所有文本都是字符串。 u need to convert it.
您需要将其转换。 like format(data,"format as") and remember it will better if this format same as database.
例如format(data,“ format as”),请记住,如果此格式与数据库相同,则效果会更好。
so the code should like be: 因此代码应为:
Private Sub cmdstats_Click()
Dim sSQL As String
Dim db As Database
Dim rs As DAO.Recordset
sSQL = "SELECT Count(*) AS [CountOfScheduleB] " & _
"FROM [BFMA_TaskList] INNER JOIN [Reviews_Programme] ON [BFMA_TaskList].[Task] = [Reviews_Programme].[Task] " & _
"WHERE [BFMA_TaskList].[Schedule]='B' AND [Reviews_Programme].[Planned_Date] Between #' & format(Me![txtstatsfrom],"dd/mm/yyyy") & '# And #' & format(Me![txtstatsto],"dd/mm/yyyy") & #';"
'Set db = CurrentDb
Set db = OpenDatabase("Your database)
Set rs = db.OpenRecordset(sSQL)
If rs.RecordCount > 0 Then
Me.Text2 = rs![CountOfScheduleB]
Else
Me.Text2 = "N/A"
End If
Set rs = Nothing
Set db = Nothing
End Sub
or 要么
Private Sub cmdstats_Click()
Dim sSQL As String
Dim db As Database
Dim rs As DAO.Recordset
sSQL = "SELECT Count(*) AS [CountOfScheduleB] " & _
"FROM [BFMA_TaskList] INNER JOIN [Reviews_Programme] ON [BFMA_TaskList].[Task] = [Reviews_Programme].[Task] " & _
"WHERE [BFMA_TaskList].[Schedule]='B' AND [Reviews_Programme].[Planned_Date] Between '" & format(Me![txtstatsfrom],"dd/mm/yyyy") & "' And '" & format(Me![txtstatsto],"dd/mm/yyyy") & "';"
'Set db = CurrentDb
Set db = OpenDatabase("Your database)
Set rs = db.OpenRecordset(sSQL)
If rs.RecordCount > 0 Then
Me.Text2 = rs![CountOfScheduleB]
Else
Me.Text2 = "N/A"
End If
Set rs = Nothing
Set db = Nothing
End Sub
If you sure of what you done, u can remove "Me." 如果您确定自己做了什么,则可以删除“我”。 cos me is form as its.
因为我是形式。 sometimes we need "Me" sometimes Not.
有时我们需要“我”,有时则不需要。
Happy Coding. 编码愉快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.