Access 2013 无法将参数查询导出到 XML 和 XSD
Access 2013 was unable to export parameter query to XML and XSD
我目前正在尝试编写 VBA 来执行 XML 但由于它失败了,我决定尝试使用 Access 附带的内置 XML 生成器。我有一个参数化查询,输入参数后,我将导出 XML 和 XSD 文件。单击“确定”后,我会弹出一个窗口,提示 "Access was unable to export the data." 它在非参数化查询上运行良好,因此我认为这不是 DLL 问题。任何想法都会有所帮助。
我能够在 Access 2010 中重现您的问题。有趣的是,Access 可以成功地将参数查询单独导出到 XML 文件,但试图同时导出 XML 和 XSD 文件导致访问阻塞。
解决方法是使用 SELECT * INTO ...
将查询结果转储到临时 table,将 table 导出到 XML 和 XSD,然后删除临时 table:
Option Compare Database
Option Explicit
Sub so37834736()
' sample data
Const queryName = "myParameterQuery"
Const tempTableName = "zzzTempTable"
Const xmlFileSpec = "C:\__tmp\zzzTest.xml"
Const xsdFileSpec = "C:\__tmp\zzzTest.xsd"
Dim cdb As DAO.Database
Set cdb = CurrentDb
Dim qdf As DAO.QueryDef
Set qdf = cdb.CreateQueryDef("", _
"SELECT * INTO [" & tempTableName & "] FROM [" & queryName & "]")
qdf!prmStartDate = DateSerial(2001, 1, 1) ' specify parameter value(s)
qdf.Execute dbFailOnError
Set qdf = Nothing
Set cdb = Nothing
Application.ExportXML acExportTable, tempTableName, xmlFileSpec, xsdFileSpec
DoCmd.DeleteObject acTable, tempTableName
End Sub
我目前正在尝试编写 VBA 来执行 XML 但由于它失败了,我决定尝试使用 Access 附带的内置 XML 生成器。我有一个参数化查询,输入参数后,我将导出 XML 和 XSD 文件。单击“确定”后,我会弹出一个窗口,提示 "Access was unable to export the data." 它在非参数化查询上运行良好,因此我认为这不是 DLL 问题。任何想法都会有所帮助。
我能够在 Access 2010 中重现您的问题。有趣的是,Access 可以成功地将参数查询单独导出到 XML 文件,但试图同时导出 XML 和 XSD 文件导致访问阻塞。
解决方法是使用 SELECT * INTO ...
将查询结果转储到临时 table,将 table 导出到 XML 和 XSD,然后删除临时 table:
Option Compare Database
Option Explicit
Sub so37834736()
' sample data
Const queryName = "myParameterQuery"
Const tempTableName = "zzzTempTable"
Const xmlFileSpec = "C:\__tmp\zzzTest.xml"
Const xsdFileSpec = "C:\__tmp\zzzTest.xsd"
Dim cdb As DAO.Database
Set cdb = CurrentDb
Dim qdf As DAO.QueryDef
Set qdf = cdb.CreateQueryDef("", _
"SELECT * INTO [" & tempTableName & "] FROM [" & queryName & "]")
qdf!prmStartDate = DateSerial(2001, 1, 1) ' specify parameter value(s)
qdf.Execute dbFailOnError
Set qdf = Nothing
Set cdb = Nothing
Application.ExportXML acExportTable, tempTableName, xmlFileSpec, xsdFileSpec
DoCmd.DeleteObject acTable, tempTableName
End Sub