【问题标题】:too few parameters, expected 1参数太少,预期为 1
【发布时间】:2020-08-07 19:44:02
【问题描述】:

我有一个小问题.....

DDA3 = "SELECT DDAs.[QR Code], DDAs.[Drug Name and Strength],DDAs.[Dispensing Date], DDAs.[Amount Prescribed], DDAs.[Prescription Date], DDAs.[Record Number], DDAs.[NOT DISPENSED] " _
& "FROM DDAs " _
& "WHERE ([DDAs].[QR Code] = [QR Code] AND [DDAs].[Dispensing Date] = [Date 2] AND [DDAs].[NOT DISPENSED] = No) " _

上面给了我错误

当我在 WHERE 部分替换时 [Date 2] 与 Date() (使用今天的日期而不是控件中的日期)它可以正常工作....

我需要使用 [Date 2] 我尝试重命名控件经常出现同样的错误,尝试删除 [QR Code] 以声明只有一个控件仍然不起作用...

(完整代码如下:

'On Error Resume Next

[Date 2] = Date

Dim rs As DAO.Recordset
Dim strOutput As String
Dim i As Integer
'Dim Date2 As Date

DDA3 = "SELECT DDAs.[QR Code], DDAs.[Drug Name and Strength],DDAs.[Dispensing Date], DDAs.[Amount Prescribed], DDAs.[Prescription Date], DDAs.[Record Number], DDAs.[NOT DISPENSED] " _
& "FROM DDAs " _
& "WHERE ([DDAs].[QR Code] = [QR Code] AND [DDAs].[Dispensing Date] = [Date 2] AND [DDAs].[NOT DISPENSED] = No) " _

'OR ([DDAs].[QR Code]=[QR Code] AND [DDAs].[Dispensing Date]= [DateMod] AND [DDAs].[NOT DISPENSED]= No) " _

Set rs = CurrentDb.OpenRecordset(DDA3)

With rs
'test for empty recordset
If Not .EOF And Not .BOF Then
    .MoveLast
    .MoveFirst
Dim cdg As String
cdg = UCase([Forms]![POYC].[txtEnterState6])

    For i = 0 To (.RecordCount - 1)
        'test for last record
        If i = (.RecordCount - 1) Then
            'last record
            strOutput = strOutput + ![Amount Prescribed] + " " + ![Drug Name and Strength]
        Else
            'all other records
            strOutput = strOutput + ![Amount Prescribed] + " " + ![Drug Name and Strength] + vbCrLf
        End If

        .MoveNext
    Next
End If
.Close
End With
'execute messagebox
MsgBox "The following DDA prescriptions for " & [cdg] & " have been dispensed:" & vbCrLf & vbCrLf & UCase([strOutput]), vbInformation + vbOKOnly, "DDA records!"
Set rs = Nothing

我有一些代码,我故意告诉访问现在忽略,直到我找到解决方案....我计划将 or 部分添加到 where 语句,以便它通过 Date() 或 [Date 2]

有什么想法吗?

【问题讨论】:

  • .. AND [DDAs].[NOT DISPENSED] = 'No')
  • DDA3 = "选择 DDAs.[QR 码]、DDAs.[药物名称和强度]、DDAs.[配药日期]、DDAs.[处方量]、DDAs.[处方日期]、DDAs .[记录编号], DDA.[未分发] " _ & "FROM DDA" _ & "WHERE ([DDAs].[QR Code] = [QR Code] AND [DDA].[Dispensing Date] = [Date 2 ] AND [DDAs].[NOT DISPENSED] = 'No') " _ St​​ill didn't work....当我将 [Date 2] (我的表单上的一个控件)更改为纯 Date() 代码工作正常.. .
  • 在我将 [Date 2] 更改为 Date() 时添加 ' 导致类型不匹配,可能是因为该字段是原始表中的是/否复选框
  • 这能回答你的问题吗? Problem with my update statement --getting error 3144。 [QR Code] 参数来自哪里?建议使用 0 或 False 代替 No。

标签: vba ms-access


【解决方案1】:

在日期前后加上 # 试试

DDA3 = "SELECT DDAs.[QR Code], DDAs.[Drug Name and Strength],DDAs.[Dispensing Date], DDAs.[Amount Prescribed], DDAs.[Prescription Date], DDAs.[Record Number], DDAs.[NOT DISPENSED] " _
& "FROM DDAs " _
& "WHERE ([DDAs].[QR Code] = [QR Code] AND [DDAs].[Dispensing Date] = #" & [Date 2] & "# AND [DDAs].[NOT DISPENSED] = No) " _

【讨论】:

  • 我明天回到我的电脑上时会试试这个。我还尝试了 #7/8/2020#(随机日期)并且效果很好,所以当我在控件周围添加 # 时会看到。
  • 同样的错误....还有什么想法吗?尝试了以下 Datex = "#" & Format([Date 2], "dd/mm/ yyyy") & "#" Datey = "#" & [Date 2] & "#" 并使用了 [DDAs]。[分配] = Datex 并且还尝试了 Datey 仍然一样....
  • DDA3 = "选择 DDAs.[QR 码]、DDAs.[药物名称和强度]、DDAs.[配药日期]、DDAs.[处方量]、DDAs.[处方日期]、DDAs .[记录编号], DDAs.[未分发]" _ & "FROM DDAs" _ & "WHERE ([DDAs].[QR Code] = [QR Code] AND ([DDAs].[Dispensing Date] = #" & 格式([Date 2], "mm/dd/ yyyy") & "#) AND [DDAs].[NOT DISPENSED] = No) OR ([DDAs].[QR Code] = [QR Code] AND [DDAs ].[Dispensing Date]= Date() AND [DDAs].[NOT DISPENSED]= No) " _ 这解决了它并且是完整的工作查询!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2015-11-14
  • 1970-01-01
相关资源
最近更新 更多