2016-02-03 3 views
1

Добрый день.Доступ к использованию запроса в отчете

У меня есть приложение инвентаризации. Когда предмет перемещается в производство, для печати требуется билет с именем клиента и названием продукта. Я создал билет в качестве отчета. Я использовал следующий запрос в качестве источника записи в отчете, и он работает точно так, как я хочу.

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, то есть изменить его на переменную. Это вызовет изменение ORDERustomerID, но не ProductID.

Я создал строку из запроса и попытался

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

, но я получаю #name? во всех текстовых полях. (Я сначала удалил запрос из источника записи в отчете.)

Я попытался использовать querydef, но не могу получить синтаксис правильно.

Может кто-нибудь помочь мне в том, как переместить запрос в процедуру, чтобы сделать отчет динамичным.

Благодаря

ответ

1

Параметр OpenArgs просто передается в отчет. Он не используется автоматически ни для чего, но доступен в процедурах событий отчета.

Так Report_Open(), вы можете сделать:

Me.RecordSource = Me.OpenArgs 

и он должен работать.

Side Примечание: в последней строке, она должна быть >0 вместо >"0"

+0

Благодаря Андре. В строке я изменил ее на> 0, но, похоже, она работает в запросе как> «0». Я тоже изменю его там. В противном случае ваше предложение отлично работало. Большое спасибо. Я не мог найти ответ нигде. –

+0

@LesProgrammer: Да, доступ довольно снисходителен к этим вещам и часто автоматически преобразует числа в строки и наоборот по мере необходимости. Но все же вы вычисляете число (разницу), поэтому вам следует сравнить его с числом. :) – Andre

Смежные вопросы