Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 在报表中访问和使用查询_Ms Access_Report - Fatal编程技术网

Ms access 在报表中访问和使用查询

Ms access 在报表中访问和使用查询,ms-access,report,Ms Access,Report,你好 我有一个库存申请。当一个项目进入生产时,需要打印一张带有客户名称和产品名称的票据。我创建了一个报告。我使用以下查询作为报告中的记录源,它的工作方式完全符合我的要求 SELECT [PkgSize] & " " & [PkgUnit] AS Pkg, tblProducts.ProductID, tblProducts.ProductPrintName, tblProducts.Grade, tblCustomers.CompanyName, tbl

你好

我有一个库存申请。当一个项目进入生产时,需要打印一张带有客户名称和产品名称的票据。我创建了一个报告。我使用以下查询作为报告中的记录源,它的工作方式完全符合我的要求

    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 
我想做的是将查询移动到我的过程中,因为我需要更改某些项的值。例如,我需要将优先级更改为不同的数字,例如2或3,即将其更改为变量。这将触发ORDCustomerID的更改,但不会触发ProductID的更改

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

DoCmd.OpenReport "rptProductPaperLabelTCTRlogo", acViewPreview, , , , Qstring
但我有名字?在所有文本框中。(我首先从报告中的记录源中删除了查询。)

我曾尝试使用querydef,但似乎无法获得正确的语法

有人能帮助我将查询移动到一个过程中以使报表动态化吗


谢谢

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

因此,在
Report\u Open()
中,您可以执行以下操作:

Me.RecordSource = Me.OpenArgs
它应该会起作用


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

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