我可以根据表单上选择的记录打开报告吗?

时间:2015-01-09 14:19:05

标签: vba ms-access

我正在寻找以下的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

然而,结果是一个空的报告。

1 个答案:

答案 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输出值。将鼠标悬停在变量上以查看其值。这允许您自己检查您的宏。您可以在执行命令之前验证输入。

快乐的编码。如果以上情况不起作用,请告诉我。