我正在寻找以下的VBA解决方案(在Access中):
我有一个名为" CS_Order"从哪里我想打开一个名为“装箱单”的报告 在表单上有字段调用PO号(它是一个文本框)。有多个记录具有不同的PO编号。当我单击文本框时,我想打开一个基于我点击的记录/字段的报告。例如:我有两条记录。一个使用PO#12345,另一个使用PO 23456.单击带有值12345的文本框时,打开的报告应包含该选定记录的所有值。如何将其翻译为VBA?
我刚刚开始探索VBA,所以我对这个主题没有广泛的了解。
这就是我提出的:
Private Sub PO_Click()
Dim strDocName As String
Dim strLinkCriteria As String
strDocName = "Packing_list"
strLinkCriteria = "[PO] = Forms![CS_Order]![PO]"
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport strDocName, acViewPreview, , strLinkCriteria
End Sub
然而,结果是一个空的报告。
答案 0 :(得分:1)
我不熟悉Access,但我认为这可行。
首先将PO文本框的值分配给变量
Dim POBoxValue As String
'assign to variable
POBoxValue = Forms![CS_Order]![PO]
'print to immediate window
Debug.Print "POBoxValue: " & POBoxValue
然后使用该变量创建标准
strLinkCriteria = "[PO] = " & "'" & POBoxValue & "'"
Debug.Print "strLinkCriteria: " & strLinkCriteria
这就是整个事情。
Private Sub PO_Click()
Dim strDocName As String
Dim strLinkCriteria As String
Dim POBoxValue As String
'assign to variable
POBoxValue = Forms![CS_Order]![PO]
'print to immediate window
Debug.Print "POBoxValue: " & POBoxValue
strDocName = "Packing_list"
'assign and check your strLinkCriteria
strLinkCriteria = "[PO] = " & "'" & POBoxValue & "'"
Debug.Print "strLinkCriteria: " & strLinkCriteria
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport strDocName, acViewPreview, , strLinkCriteria
End Sub
使用F8逐步运行宏。观察每个变量在Watch窗口中更改时的值。或者只是使用Debug.Print输出值。将鼠标悬停在变量上以查看其值。这允许您自己检查您的宏。您可以在执行命令之前验证输入。
快乐的编码。如果以上情况不起作用,请告诉我。