通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.OpenReport
的Where
子句中定义了标准。
另一种解决方案是使用OpenArgs
参数DoCmd.OpenReport
,并使用Me.OpenArgs
在报告的OnOpen事件中检索该值。