试图打开特定记录的报告,但它一直显示所有记录 - 有点?

Posted

技术标签:

【中文标题】试图打开特定记录的报告,但它一直显示所有记录 - 有点?【英文标题】:Attempting to open report to specific record but it keeps showing all records - sort of? 【发布时间】:2019-01-24 16:27:05 【问题描述】:

我有一个包含几个子报表的报表,它们都是从同一个表中提取数据。我将它们制作为子报告的唯一原因是使用 Access 创建报告时的大小限制(21 英寸问题)。我有从另一个表单(frmWorkOrders 但我不认为这并不重要)加载的表单(frmService),它在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   

【问题讨论】:

【参考方案1】:

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

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

如果WorkOrderID 是一个字符串字段,试试这个:

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

【讨论】:

我编辑了我的答案。问题在于对表单及其控件的引用。 可能报告中有代码,禁用过滤器? 我在您的报告中看到的唯一内容是您没有为前两个 SubReport 对象(即srptFirstStageChild434)设置Link Master FieldsLink Child Fields。我想它们也应该设置为WorkOrderID,就像其他 SubReport 对象一样,对吧?没有它,它们与主报告之间就没有关联。 宾果游戏!字段的链接是错误的 - 谢谢!

以上是关于试图打开特定记录的报告,但它一直显示所有记录 - 有点?的主要内容,如果未能解决你的问题,请参考以下文章

C#,遍历数据集并显示数据集列中的每条记录

ms-access:仅显示特定日期内记录的报告

如何使用 JDBC/Java 访问和显示 MySQL 关系数据库中的特定记录?

打开报表并将 DAO 记录集附加到它

Laravel 5 具有雄辩的关系回调函数返回错误记录

如果该记录尚不存在但它不起作用,我试图仅将新记录插入数据库