Access VBA 没有运行我的 XML 转换

Access VBA is not running my XML transformation

我有一个访问数据库,可以将数据导出到 XML 文档,然后使用 XSLT 文件对其进行转换。直到几分钟前它都运行良好,突然间,它不再转换 XML,但它仍然进行第一次导出。

这是我的 VBA 代码;

Option Compare Database
Option Explicit

Private Sub Command364_Click()
    Dim objAD As AdditionalData

    Set objAD = Application.CreateAdditionalData

    With objAD
        .Add "master_version"
        .Add "press_section"
        .Add "version"
        .Add "task_info_press_section"
        .Add "task_info_post_press"
        .Add "post_press_version"
    End With

    Application.ExportXML acExportQuery, "order", _
    "C:\Users\James Brace\Documents\Technique Access Stuff\Exports\ExportPreXSLT.xml", _
    WhereCondition:="[ORDERPK] = " & [Forms]![frmMAINENTRY]![ORDERPK], _
    AdditionalData:=objAD

    Application.TransformXML "C:\Users\James Brace\Documents\Technique Access Stuff\Exports\ExportPreXSLT.xml", _
                         "C:\Users\James Brace\Documents\Technique Access Stuff\Exports\XSLT Template.xsl", _
                         "C:\Users\James Brace\Documents\Technique Access Stuff\Exports\ExportTransformed.xml"

End Sub

这段代码没有任何变化,所以我不明白为什么它突然停止工作了。它肯定会触发整个事件,因为我已经在 TransformXML 命令前后使用 MsgBox 行对其进行了测试。这是我正在使用的 XSLT;

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

   <!-- removes specified nodes from all elements -->

   <xsl:template match="ORDER"/>
   <xsl:template match="ORDERPK"/>
   <xsl:template match="PRESS_x0020_SECTION"/>
   <xsl:template match="POST_x0020_PRESS"/>

   <!-- Creates attributes against the ORDER element -->
   <xsl:strip-space elements="*"/>
   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="dataroot">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()[not(self::master_version)]"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="job_id | site_code | Replace"/>

   <!-- identity transform -->
   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="order">
       <order job_id="{job_id}" site_code="{site_code}" replace="{Replace}">
          <xsl:apply-templates select="@*|node()"/>
          <xsl:apply-templates select="../master_version"/>
       </order>
   </xsl:template>

   <xsl:template match="press_section">
       <press_section>
          <xsl:apply-templates select="@*|node()"/>
          <xsl:apply-templates select="../task_info_press_section"/>
       </press_section>
   </xsl:template>

   <xsl:template match="../task_info_press_section">
      <xsl:element name="task_info">
         <xsl:apply-templates/>
      </xsl:element>
   </xsl:template>

   <xsl:template match="task_info_post_press">
      <xsl:element name="task_info2">
         <xsl:apply-templates/>
      </xsl:element>
   </xsl:template>

   <xsl:template match="master_version[not(ORDER = //order/ORDERPK)]"/>
   <xsl:template match="press_section[not(ORDER = //order/ORDERPK)]"/>
   <xsl:template match="version[not(ORDER = //order/ORDERPK)]"/>
   <xsl:template match="task_info_press_section[not(ORDER = //order/ORDERPK)]"/>
   <xsl:template match="task_info_post_press[not(ORDER = //order/ORDERPK)]"/>
   <xsl:template match="post_press_version[not(ORDER = //order/ORDERPK)]"/>

</xsl:stylesheet>

感谢任何帮助,谢谢!

编辑;我也试过反编译然后编译代码,以及对数据库进行压缩和修复,但这并没有改变任何东西。

没关系,这是 XSLT 中的一个错误。我找不到错误,但从头开始重写代码完成了工作。