Access 2007 VBA DoCmd.SetParameter替换?

Dra*_*Yen 4 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"
Run Code Online (Sandbox Code Playgroud)

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

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

pte*_*don 7

DoCmd.OpenQuery您需要操作querydef对象的命名参数,然后执行它,而不是使用它.您可以使用执行选项,例如以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."
Run Code Online (Sandbox Code Playgroud)

  • "Bang"符号 - `qdf!ReportYear = Year.Value` - 也有效. (2认同)