报表中的访问使用查询

Posted

技术标签:

【中文标题】报表中的访问使用查询【英文标题】:Access Use Query in Report 【发布时间】:2016-02-03 15:43:12 【问题描述】:

美好的一天。

我有一个库存应用程序。当一个项目投入生产时,需要打印一张带有客户名称和产品名称的票。我将工单创建为报告。我使用以下查询作为报告中的记录源,它完全按照我的意愿工作。

    SELECT [PkgSize] & " " & [PkgUnit] AS Pkg, tblProducts.ProductID, tblProducts.ProductPrintName, 
        tblProducts.Grade, tblCustomers.CompanyName, tblOrderDetails.ODEPriority 
    FROM tblCustomers INNER JOIN (tblOrders INNER JOIN (tblProducts INNER JOIN tblOrderDetails 
        ON tblProducts.ProductID = tblOrderDetails.ODEProductFK) 
        ON tblOrders.ORDOrderID = tblOrderDetails.ODEOrderID) 
        ON tblCustomers.ID = tblOrders.ORDCustomerID 
    WHERE (((tblProducts.ProductID)=[Forms]![frmInventoryTransfers]![cboTransferProductID]) 
         AND ((tblOrderDetails.ODEPriority)=1) 
         AND (([tblOrderDetails]![ODEQtyOrdered]-[tblOrderDetails]![ODEQtyProduced])>"0"));

报告打开时显示以下内容:

DoCmd.OpenReport "rptProductPaperLabelTCTRlogo", acViewPreview 

我想要做的是将查询移动到我的过程中,因为我需要更改某些项目的值。例如,我需要将 ODEPriority 更改为不同的数字,例如 2 或 3,即将其更改为变量。这将触发 ORDCustomerID 更改,但不会触发 ProductID。

我已经从查询中创建了一个字符串并尝试过

DoCmd.OpenReport "rptProductPaperLabelTCTRlogo", acViewPreview, , , , Qstring

但我得到#Name?在所有文本框中。 (我先是从报表中的记录源中去掉了查询。)

我尝试使用 querydef,但似乎无法正确使用语法。

有人可以帮助我了解如何将查询移动到一个过程中以使报告动态化。

谢谢

【问题讨论】:

【参考方案1】:

OpenArgs 参数只是传递给报告。它不会自动用于任何事情,但在报告事件过程中可用。

所以在Report_Open(),你可以这样做:

Me.RecordSource = Me.OpenArgs

它应该可以工作。

旁注:在最后一行,应该是>0 而不是>"0"

【讨论】:

谢谢安德烈。在字符串中,我确实将其更改为> 0,但它似乎在查询中作为>“0”工作。我也会在那里改变它。否则,您的建议非常有效。非常感谢你。我在任何地方都找不到那个答案。 @LesProgrammer:是的,Access 对这些东西非常宽容,并且经常根据需要自动将数字转换为字符串,反之亦然。但是,您仍然计算了一个数字(差异),因此您应该将它与一个数字进行比较。 :)

以上是关于报表中的访问使用查询的主要内容,如果未能解决你的问题,请参考以下文章

访问报表传递参数到子报表查询

在执行报表打开事件之前访问报表运行查询

访问报表/查询设计

从报表中导出查询以访问带有参数的 Excel

如何使用绑定数据集自动更新访问中的报表?

在 Oracle APEX 中访问报表输出表