Access 2007 VBA DoCmd.SetParameter替换?

时间:2014-02-03 21:40:44

标签: ms-access-2007 access-vba

我继承了一个Access数据库,里面有很多表,表单和查询。但是,我是一名PHP程序员,VBA对我来说很陌生。我被要求做出一些改变,在几天的时间里我能够开始工作(从旧的随机SO帖子中得到很多帮助)。

将数据库传递回用户后,在我的计算机上运行的代码无法正常运行。我似乎有Access 2010,他们有2007年。我可以说,Access 2007中的VBA中不存在DoCmd.SetParameter函数。

以下是代码片段:

DoCmd.SetParameter "ReportYear", Year.Value
DoCmd.SetParameter "ReportMonth", Month.Value
DoCmd.OpenQuery "doFillData"

doFillData是Access内部的一个查询,它自动插入到另一个表中,在运行之前需要2个参数(年和月)。

显而易见的答案是,让他们升级到2010年,但我没有这种力量。我假设我将能够在2007年创建条件代码以执行不同的操作,但我找不到类似的功能。有人有什么想法吗?

1 个答案:

答案 0 :(得分:7)

您希望操纵querydef对象的命名参数,然后执行它,而不是使用DoCmd.OpenQuery。执行此方法时,可以使用acFailOnError等执行选项(OpenQuery不可用),并且可以检测受影响的记录数。

Dim db As DAO.Database
Dim qdf As DAO.QueryDef

Set db = CurrentDb
Set qdf = db.QueryDefs("doFillData")
qdf.Parameter("ReportYear") = Year.Value
qdf.Parameter("ReportMonth") = Month.Value
qdf.Execute 

MsgBox qdf.RecordsAffected & " records were affected."