首页 > 解决方案 > “此表达式输入错误或太复杂而无法评估”错误

问题描述

我正在尝试将 SQL 语句用于使用 VBA 的报告的记录源。我知道 SQL 可以工作,因为我从正在工作的查询的 SQL 视图中复制了 SQL。

这里是在报告的打开事件时触发的 SQL 记录源。我对 SQL 语句进行了更改,该语句添加了一个变量strInput,您可以在 WHERE 子句中看到该变量。

Private Sub Report_Open(Cancel As Integer)
Dim sql As String
Dim strInput As String
strInput = Me.OpenArgs

sql = "SELECT DISTINCTROW INV.NUM, INV.SUB, [INVD]![QTY]*([INVD]![VDR]+[INVD]![MATQ]) AS Expr1, [INVD]![QTY]*[INVD]![LPR] AS Expr2, [Expr1]+[Expr2] AS Expr3, [INVD]![MATQ]+[INVD]![VDR] AS Expr4, ([INVD]![MATQ]+[INVD]![VDR])*[INVD]![QTY]*0.8 AS Expr5" & _
    " FROM (JOBS INNER JOIN UN ON JOBS.UNID = UN.JOBS) INNER JOIN ((CONT INNER JOIN INV ON CONT.CTNO = INV.CTNO) INNER JOIN INVD ON (INV.CTNO = INVD.CTNO) AND (INV.INV = INVD.INV)) ON (UN.UNID = INVD.UNID) AND (UN.CTNO = INVD.CTNO)" & _
    " WHERE (((INV.JOB) = [Forms]![02- UNIT JOB INVOICE ENTRY]![JOB])) AND InvNum = ' " & strInput & "'" & _
    " ORDER BY INV.CTNO, INV.JOB, INV.INV, INVD.ITEM;"

If Me.OpenArgs <> "" Then
    Me.RecordSource = sql
    End If



End Sub

我得到的错误是

此表达式键入错误或太复杂而无法计算

我知道有类似的线程打开,但这些解决方案对我不起作用。谢谢你。

编辑 1:

根据您的回复,我删除了 on open 程序并尝试使用您所说的 where 子句

MsgBox strInput
DoCmd.OpenReport "PRINT REPORT", acPreview, , "INVD.InvNum =' " & strInput & "'"

这现在给了我同样的错误

此表达式键入错误或太复杂而无法计算

标签: ms-accessvba

解决方案


解决方案是从 WHERE 子句中删除字符串引号,因为 InvNum 是一个数字。最后的 Where 子句如下所示

WHERE (((INV.JOB)=[Forms]![02- UNIT JOB INVOICE ENTRY]![JOB])) AND INVD.[InvNum] = " & strInput

推荐阅读