2010-06-07 6 views
3

동료가 ODBC를 통해 연결된 테이블을 사용하는 일련의 작업 쿼리에서 OpenQuery를 호출하여 Sybase 데이터베이스에 대해 일련의 SQL 작업을 실행하는 Microsoft Access 매크로를 상속했습니다. 나는 그가 데이터베이스에 대해 직접 실행할 수있는 SQL 스크립트로 변환하도록 도와주었습니다. 이와 같은 매크로가 꽤 많기 때문에 변환 도구를 사용하고 싶습니다. 리버스 엔지니어링 .NET에서 매크로 액세스

(하나가 이미 존재하지 않는 경우에, 그 날 직접하시기 바랍니다.)

나는 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을 일단 나는 사이베이스 SQL로 변환하는 작업을해야합니다 것을 알고있다. 내가 올 때 그 다리를 건너 수 있습니다.)

답변

4

가한다면 이런 식으로 뭔가를, 텍스트 파일 시도하는 매크로 정의를 덤프하는 것이 도움이 될 :

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

그런 다음 텍스트 파일을 열고 액션인수 문을 읽을 수 있습니다.

+0

... 그리고 저장된 QueryDefs에서 SQL을 가져옵니다. –

관련 문제