我继承了一个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年创建条件代码以执行不同的操作,但我找不到类似的功能。有人有什么想法吗?
答案 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."