首页 > 解决方案 > 试图打开特定记录的报告,但它一直显示所有记录 - 有点?

问题描述

我有一个包含几个子报告的报告,这些子报告都是从同一个表中提取数据。我将它们制作为子报告的唯一原因是使用 Access 创建报告时的大小限制(21 英寸问题)。我有frmService从另一个表单加载的表单()(frmWorkOrders但我认为这并不重要),它在tblServiceRecord. 表单正确打开,对同一条记录正确操作,但是frmService我有一个控件(按钮)可以打开报告(rptServiceRecord),因此我们可以为客户打印记录。无论如何,报告总是会显示每条记录的一部分,但不会显示多条记录的所有部分。

我有几个子报告(srptFirstStagesrptSecondStage等),打印每条记录的仅有的两个子报告是上面列出的两个。所有其他子报表只打印我希望它打印的关联记录,即使数据库中有多个记录。最奇怪的部分,也是让我无法解决这个问题的部分,是所有子报告都是平等创建的。报告本身有一个过滤器(见下面的代码),但没有一个子报告有这个过滤器。我还将过滤器负载检查为Yes. 我还尝试使用以下 SQL 使用查询来创建此报告:

SELECT tblServiceRecord.*, tblWorkOrder.Task, [FName] & " " & [LName] AS FullName, "WD0" & [tblWorkOrder]![ID] AS WorkOrder
FROM tblServiceRecord INNER JOIN (tblCustomers RIGHT JOIN tblWorkOrder ON tblCustomers.ID = tblWorkOrder.CustomerID) ON tblServiceRecord.WorkOrderID = tblWorkOrder.ID
WHERE (((tblServiceRecord.WorkOrderID)=[Forms]![frmService]![txtWO]));

在数据表视图中显示查询会显示正确的信息,并且不会列出表中的多行。所以我不完全确定为什么报告确实显示多行,即使第二行srptFirstStagesrptSecondStage正在显示的是空白。

rptServiceRecord要从我使用的控件 打开报告 ( ):

Private Sub Command275_Click()
On Error GoTo Command275_Click_Err

    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.OpenReport "rptServiceRecord", acViewPreview, , "[WorkOrderID] = Forms.[frmService].[txtWO]", acNormal


Command275_Click_Exit:
    Exit Sub

Command275_Click_Err:
    MsgBox Error$
    Resume Command275_Click_Exit

End Sub   

标签: vbams-accessreport

解决方案


WorkOrderID如果是数字字段,请尝试此操作:

DoCmd.OpenReport "rptServiceRecord", acViewPreview, , "[WorkOrderID] = " & Forms("frmService")("txtWO").Value, acNormal

WorkOrderID如果是字符串字段,请尝试此操作:

DoCmd.OpenReport "rptServiceRecord", acViewPreview, , "[WorkOrderID] = '" & Forms("frmService")("txtWO").Value & "'", acNormal

推荐阅读