MS Access 2016 - 使用where条件传递参数以打开报表时参数输入弹出窗口

时间:2017-05-26 07:40:45

标签: ms-access ms-access-2016

我的问题很简单,经过多次搜索,我找不到这个问题的简单答案。许多答案都是关于更复杂的编码情况,我很难与这个问题联系起来。

我正在从表格中打开一份报告。我可以将username参数指定为“bill”,报告仅显示“bill”是用户名的记录。如果我手动将“账单”更改为“tom”,它仍然有效并显示用户名为“tom”的记录

Private Sub Command11_Click()

Const cstrForm2 As String = "Report1"

 'DoCmd.OpenReport cstrForm2, acViewPreview, WhereCondition:="[username]=" & "'bill'"


End Sub

如果我使用以下代码,并输入Me.username(用户名是文本框的名称,并且是无限制的)

DoCmd.OpenReport cstrForm2, acViewPreview, WhereCondition:="[username]=" & Me.username

MS Access会提示我输入参数值。如果我输入参数值“tom”或“bill”,我会在报告中获得正确的数据。

如何摆脱参数输入框,基本上如何传递正确的参数值格式以获得我想要的结果?我认为这可能与使用引号和其他字符的组合有关。

2 个答案:

答案 0 :(得分:0)

答案是先创建一个查询。显然创建一个查询可以避免这个问题。

在设计视图下,在查询的条件部分中为相关表创建查询:

在条件

下输入以下内容
[Forms]![Form1]![username]

其中Form1是表单的名称,username是文本框的名称。

当您运行查询时,请使用查询作为基础创建报告。

答案 1 :(得分:0)

您仍然需要单引号:

DoCmd.OpenReport cstrForm2, acViewPreview, WhereCondition:="[username]='" & Me!username.Value & "'"