通PARAMATERS在Access VBA

通PARAMATERS在Access VBA

问题描述:


我已经遇到这个问题相当长的一段时间,所以帮助才会真正理解...通PARAMATERS在Access VBA

我有基于查询的一份报告显示机利用机器列表。在加载之前,报告会提示对话框输入查询的参数:sDate和eDate(分别开始&结束日期)。

该报告中的每条记录都有一个命令按钮,该按钮打开另一个报告,指定所选单个机器的机器错误。 新报告基于接收参数sDate,eDate和mCode(日期和机器代码)的查询。 我试图将参数从第一个报告发送到第二个报告,这样当我打开新报告时,我不必输入任何内容。 我已经尝试了不同的方法来发送参数通过编辑vba中的命令按钮的单击事件。

startdate enddate,机器码是第一个报告中不可见的文本框字段,其中包含我需要的值。

DoCmd.OpenReport "rpt_MachineBreaks", acViewReport, , "sDate=" & Me.startdate & 
" AND eDate=" & Me.enddate & " AND mCode=" & Me.machinecode 

但对话框提示我输入SDATE,EDATE和M代码

另一种方法是使用QueryDefs

Dim db As Database 
Dim qry As QueryDef 

Set db = CurrentDb 
Set qry = db.QueryDefs("qry_singleMachineBreaks") 

qry.Parameters("sDate") = Me.startdate 
qry.Parameters("eDate") = Me.enddate 
qry.Parameters("mCode") = Me.machinecode 

DoCmd.OpenReport "rpt_singleMachineBreaks", acViewReport 

修改新报告的查询参数同样,对话框提示输入sDate,eDate和mCode ...

帮助请!!!

Access for sharing参数中的常见解决方案是使用表单。这允许您控制用户输入,甚至可以隐藏,一旦获得正确的参数。由此不难指一种形式,一个报表或查询:

SELECT Field1, Field2, ADate 
FROM ATable 
WHERE ADate = Forms!AForm!txtDate 

你可以从你的基础查询中删除参数,并有DoCmd.OpenReportWhere子句中定义了标准。
另一种解决方案是使用OpenArgs参数DoCmd.OpenReport,并使用Me.OpenArgs在报告的OnOpen事件中检索该值。