使用查询 Access2007 将参数传递给记录源

pass parameters to record source with query Access2007

我对访问还比较陌生,我的任务是改进应用程序的导航。

我有一个用于打开报告的表格。 报道记录来源如下,

SELECT 
    Projects.Project_Number, 
    Projects.Customer, 
    Projects.End_User, 
    Projects.Engineering_Company, 
    [Merged Ship and Delivery Dates].Sched_Next_Delivery_Date, 
    [Merged Ship and Delivery Dates].Sched_Next_Ship_Date, 
    Projects.QC_Pack_Req, 
    Projects.Target_QC_Pack_Date, 
    Projects.Invoice_QC_Pack 
FROM 
    Projects LEFT JOIN [Merged Ship and Delivery Dates] 
    ON Projects.Project_Number = [Merged Ship and Delivery Dates].Project_Number 
WHERE 
    (((Projects.Project_Number = [Project Number] ))) 
ORDER BY Projects.Project_Number;

我试图让报告在每次都没有提示的情况下打开。在某些情况下,我需要刷新报表或从其他表单打开它。 我试过使用

DoCmd.OpenReport "Project Control Sheet", _ 
                acViewReport, , _ 
                "[Project_Number]=" & Me.ProjectNumber, , _
                "[Project_Number]=" & Me.ProjectNumber

仍然无法将参数传递给记录源。反正我有传参给recordsource(query)吗?

我试过使用

Forms![formName]ProjectNumber

where 语句中,但这仅适用于单个表单,我有其他表单可以打开此报告。

刷新表单的目的是让用户在更新报表后可以查看对报表所做的更改。

如果您从报表的记录源查询中删除 WHERE 子句,您稍后可以使用 WhereCondition 选项过滤 returns DoCmd.OpenReport 方法。

Dim strWhereCondition As String
strWhereCondition = "[Project_Number]=" & Me.ProjectNumber.Value
Debug.Print strWhereCondition ' <- view this in Immediate window; Ctrl+g will take you there
'DoCmd.OpenReport "Project Control Sheet", acViewReport, , strWhereCondition
DoCmd.OpenReport ReportName:="Project Control Sheet", _
    View:=acViewReport, WhereCondition:=strWhereCondition

如果您想要不同的方法,可以使用 TempVar,因为您的 Access 版本是 2007。

TempVars.Add "ProjectNumber", Me.ProjectNumber.Value

并更改记录源查询以使用 TempVar ...

WHERE Projects.Project_Number = [TempVars]![ProjectNumber]