代码之家  ›  专栏  ›  技术社区  ›  John M Gant aman_novice

对.NET中的访问宏实施反向工程

  •  3
  • John M Gant aman_novice  · 技术社区  · 14 年前

    一位同事继承了一个Microsoft Access宏,该宏通过对一组操作查询调用openquery来对Sybase数据库执行一系列SQL操作,这些操作查询在ODBC上使用链接表。我想帮助他将其转换为一个SQL脚本,我们可以直接对数据库执行该脚本。因为我们有很多这样的宏,所以我想设计一个转换工具。

    (除非已经存在,在这种情况下,请指示我。)

    我希望能够使用COM互操作访问宏的详细信息。到目前为止,我还没有找到一种方法来了解这些细节。这是我到目前为止所拥有的。

    Imports Access = Microsoft.Office.Interop.Access
    Imports System.Runtime.InteropServices
    
    Module Module1
    
        Sub Main()
            Dim app As New Access.Application()
            app.OpenCurrentDatabase("c:\test.mdb")
            Dim macro As Access.AccessObject = app.CurrentProject.AllMacros("Macro1")
            'Do something with variable "macro"???'
            app.Quit(Access.AcQuitOption.acQuitSaveNone)
            Marshal.FinalReleaseComObject(app)
        End Sub
    
    End Module
    

    我认为AccessObject的任何成员都没有提供我需要的信息。但我找不到任何其他提到宏的东西。有人做过这样的事吗?这里有什么可以使用的docmd或syscmd操作吗?

    (顺便说一下,我知道一旦我得到了SQL,我就有了将其转换为SybaseSQL的任务。我一到那座桥就过去。)

    1 回复  |  直到 14 年前
        1
  •  4
  •   HansUp    14 年前

    如果将宏定义转储到文本文件有帮助,请尝试如下操作:

    application.saveastext acMacro, "Macro1", "Macro1.txt"
    

    然后您可以打开文本文件并读取 行动 论证 声明。