问题描述
为了实现它,我整理了一个查询 [Qry_Mass_Print],将工作卡号 [Job Number] 与是/否字段组合在一起,指示是否应打印记录 [PrntJbSwtch]
在使用监视列表的 VBA 中,以下代码似乎正在计算正确的记录数,因此我相信查找工作正常,但在循环分配给打印字符串变量时似乎无法提取作业编号PRNTstr
Private Sub MssJbCrdPrnt_Click()
On Error GoTo ErrorHandler
Dim PRNTstr As String
Dim strsql As String
Dim rs As DAO.Recordset
strsql = "SELECT 'Job Number' FROM Qry_Mass_Print WHERE [PrntJbSwtch] = True"
Set rs = CurrentDb.OpenRecordset(strsql)
With rs
If Not .BOF And Not .EOF Then
.MoveLast
.MoveFirst
While (Not .EOF)
'' MsgBox (!Job_Number)
PRNTstr = !Job_Number
DoCmd.OpenReport "JobCard",acnormal,PRNTstr
.MoveNext
Wend
End If
.Close
End With
ExitSub:
Set rs = nothing
Exit Sub
ErrorHandler:
Resume ExitSub
End Sub
我认为是检索作业号导致了问题,因为我什至无法将其显示在 msgBox 中...
对导致它的原因有什么建议吗?
解决方法
而不是 SQL 字符串:
strSQL = "SELECT 'Job Number' FROM Qry_Mass_Print WHERE [PrntJbSwtch] = True"
您应该将字段名称括在方括号中:
strSQL = "SELECT [Job Number] FROM Qry_Mass_Print WHERE [PrntJbSwtch] = True"
您可能还想在 SQL 字符串中放入 ORDER BY
。
.. 并相应地调整代码:
PRNTstr = ![Job Number].Value
问候,