我正在创建一个MS Access报告。我遇到了一个小问题,我不知道哪里出了问题。所以我想做的是
1)从查询中选择所有内容(查询需要“ TO”和“ FROM”日期。我将这些值传递给frmX,然后在查询中将其引用)。当我在打开frmX的情况下自行运行查询时-运行正常。2)我试图更改数据中的某些值3)将新值插入tempTable1
这是我的代码:
dim rs1 as DAO.Recordset
dim rs2 as DAO.Recordset
CurrentDb.Execute "DELETE FROM [tempProvider-Detail]"
'Repopulating temp table
DoCmd.OpenQuery "qryProvider-FINAL"
'Input Source
Set rs1 = CurrentDb.OpenRecordset("Select * from [qryProvider-Final]", , dbOpenSnapshot)
'Target Source
Set rs2 = CurrentDb.OpenRecordset("Select * from tempProvider-DETAIL", dbOpenDynamic)
有趣的是,它不会挂在DoCMD.OpenQuery上-但是,当我设置rs1 ......时,它告诉我它需要2个参数。我不知道为什么-因为查询已经打开-并且当我尝试自行打开它时它可以正常工作(它在查询中引用了frmX中的日期)。
请帮帮我!
所以我做到了这一点,因为海因兹(Heinzi)帮助了我。
DoCmd.OpenQuery "qryProvider-FINAL"
Set qdf = CurrentDb.QueryDefs("qryProvider-FINAL")
qdf.Parameters(0) = [Forms]![frmX]![txtFrom]
qdf.Parameters(1) = [Forms]![frmX]![txtTo]
Set rs1 = qdf.OpenRecordset
strSQL = "SELECT * FROM [qryProvider-FINAL];"
'Input Source
Set rs1 = CurrentDb.OpenRecordset(strSQL, , dbOpenSnapshot) ---this is where it hangs up
使用CurrentDb.OpenRecordset打开记录集时,不能引用窗体控件。只是不支持。可以在下面的MSDN文章中找到详细信息:
答案是,您在这里在不同的上下文中调用Jet引擎,而这一切都与众不同。当您从参数查询中获取数据时,该数据使用表单通过Access用户界面提供参数,如前面的示例所示,Access可以评估涉及的表达式并将值提供给Jet。当您从使用表单通过VBA(而不是通过表单)提供参数的参数查询获取数据时,管理用户界面的Access位非常重要。因此,Jet传递了字符串“ [Forms]![frmSelectCountry]![cboCountry]”,而不是cboCountry中的值。因为Jet不知道如何计算表达式,所以它无法打开记录集。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句