簡體   English   中英

MS Access運行時錯誤“ 3061”,預期參數太少2

[英]MS Access runtime error '3061' too few parameters expected 2

我一直在玩這個vba / sql代碼已有一段時間了,我無法弄清楚為什么我總是收到錯誤消息“ MS Access運行時錯誤'3061'預期參數2太少”,我缺少什么嗎? 我試圖計算在帶有“ B”計划的“ reviews_programme”表中有多少條記錄(這是BFMA_Tasklist的聯接表的一部分,並在任務字段上聯接),該表介於2個從表單輸入的日期之間。 結果將顯示在表單上的文本框中。

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

任何幫助將不勝感激。 謝謝。

嘗試這個:

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") & "#;"

首先,currentDB在哪里? 您需要為此建立數據庫連接,然后再調用它的表。

第二我認為“ B”就足夠了,不需要““ B””

第三,您需要使用“#”作為日期參數。 並格式化文本cos,我們都知道所有文本都是字符串。 您需要將其轉換。 例如format(data,“ format as”),請記住,如果此格式與數據庫相同,則效果會更好。

因此代碼應為:

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

要么

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

如果您確定自己做了什么,則可以刪除“我”。 因為我是形式。 有時我們需要“我”,有時則不需要。

編碼愉快。

暫無
暫無

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

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