MS Access - VBA执行后查询定义消失

时间:2014-04-29 17:39:01

标签: excel vba ms-access-2010

我设置了一个Access 2010数据库,用于跟踪工作时间。我在表单上有一个按钮,其中包含以下VBA:

Private Sub cmdExport_Click()
Dim myUser As String

myUser = Environ("Username")

DoCmd.OutputTo acOutputQuery, "ExportTime", "ExcelWorkbook(*.xlsx)", "C:\Users\" & myUser & "\Desktop\Time" & Format(Me.txtStartDate, "yyyymmdd") & "-" & Format(Me.txtEndDate, "yyyymmdd") & ".xlsx", False, "", , acExportQualityPrint

End Sub

该按钮使用以下定义导出名为ExportTime的已保存查询:

SELECT MYTIME.MYDATE, MYTIME.ID, MYTIME.CM, MYTIME.MYDESCRIP, MYTIME.MYHOURS
FROM CM RIGHT JOIN MYTIME ON CM.ID = MYTIME.CM
WHERE (((MYTIME.MYDATE)>=[Forms]![ExportTime]![txtStartDate] And (MYTIME.MYDATE)<=[Forms]![ExportTime]![txtEndDate]))
ORDER BY MYTIME.MYDATE, MYTIME.CM;

按下按钮成功将时间导出到Excel电子表格,正如我想要的那样。

问题是运行此操作后,查询定义消失。命名查询仍在已保存查询的列表中,但其定义更改为

SELECT;

这似乎经常发生。我已将查询定义复制到文本文件中,因此当我想再次导出时间时,我可以将其粘贴回来。尽管如此,我仍然难以理解为什么定义会消失。

非常感谢任何想法或建议。

1 个答案:

答案 0 :(得分:0)

我使用已保存的导出规范来完成此任务,并在VBA中使用:

CurrentProject.ImportExportSpecifications("<name of export specification>").Execute False

我不确定这种情况下的查询是否可以引用表单字段;我将这些值复制到TempVars中并且有效。