【问题标题】:Filtering a report query过滤报表查询
【发布时间】:2015-02-12 22:28:42
【问题描述】:

这里仍然是一个初级访问程序员。试图让报告工作。这就是我正在做的事情

我首先使用报表向导使用以下查询作为输入创建了一个报表

SELECT EmployeeId, Project, StartDate
FROM Tasks;

我有一个表单,我在其中选择了员工 ID。我想根据所选的员工 ID 过滤报告。这是我调用报告的内容

DoCmd.OpenReport "rptEmpWork", acViewPreview, "qryEmpReport", "EmployeeId = " & strempid

qryEmpReport 是包含我上面提到的报告查询的查询的名称。 strempid 保存在表单中选择的值。但是,当我开始执行此操作时,它会提示我再次输入员工 ID。关于我为什么得到这个的任何想法?我已经验证以确保 strempid 确实包含之前选择的值。

【问题讨论】:

    标签: ms-access vba ms-access-2007


    【解决方案1】:

    我猜Tasks.EmployeeId 是文本数据类型。如果我的猜测是正确的,请在您为 EmployeeId 提供的值周围添加引号:

    DoCmd.OpenReport "rptEmpWork", acViewPreview, "qryEmpReport", "EmployeeId = '" & strempid & "'"
    

    根据我们在 cmets 中的故障排除练习,我认为您应该给自己一个机会来检查您为 OpenReportWhereCondition 参数提供的实际字符串值。 (最好查看实际的字符串,而不是试图想象它的样子。)

    Dim strWhereCondition As String
    strWhereCondition = "EmployeeId = '" & strempid & "'"
    Debug.Print "strWhereCondition ->" & strWhereCondition & "<-"
    DoCmd.OpenReport "rptEmpWork", acViewPreview, "qryEmpReport", strWhereCondition
    

    在即时窗口中查看Debug.Print 的输出; Ctrl+g 会带你去那里。

    【讨论】:

    • 谢谢。这肯定会带走提示,但报告是空的。表中有满足条件的数据。我必须修剪一下吗?
    • 在 Access 的查询设计器中运行此参数查询,并在提示您输入 which employee id 时插入您的 strempid 值:SELECT EmployeeId, Project, StartDate FROM Tasks WHERE EmployeeId = [which employee id]; 有它返回任何记录?如果是这样,它们是您期望的记录吗?
    • 效果很好。返回我期望的 1 行。这是查询 SELECT EmployeeId, Project, StartDate FROM Tasks WHERE EmployeeId = 'A111111'。我确实使用查询来提示。我的意思是表明我输入了什么
    • OK,然后在您的代码中,在DoCmd.OpenReport 之前的行中,添加以下行:Debug.Print "EmployeeId = '" &amp; strempid &amp; "'" 然后运行代码并在“立即”窗口中查看Debug.Print 的输出。它向你展示了什么?
    • 我的错。在您要求我添加的报价之后有一个空格。效果很好。非常感谢你的帮助。真的很感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多