Как составить список объектов DataMacro в базе данных Access?

Можно ли программно перечислить макросы данных в базе данных Access 2010+? Если так, то как?


Примечание. Макросы данных представляют собой процедуры, подобные триггерам, которые создаются в контексте пользовательского интерфейса конструктора таблиц. Они были новыми в Acces 2010. Они НЕ то же самое, что и обычные макросы, которые легко перечислить.

У них есть свои новые AcObjectType значение перечисления: acTableDataMacro, но я не могу найти другого аспекта объектной модели Access или DAO, которая бы ссылалась на них. Они даже не появляются в MSysObjects Таблица.

1 ответ

Решение

Этот код экспортирует метаданные DataMacro в XML-документ ( источник):

Sub DocumentDataMacros()

'loop through all tables with data macros
'write data macros to external files
'open folder with files when done

' click HERE
' press F5 to Run!

' Crystal
' April 2010

On Error GoTo Proc_Err

' declare variables
Dim db As DAO.Database _
, r As DAO.Recordset

Dim sPath As String _
, sPathFile As String _
, s As String

' assign variables
Set db = CurrentDb

sPath = CurrentProject.Path & "\"

s = "SELECT [Name] FROM MSysObjects WHERE Not IsNull(LvExtra) and Type =1"

Set r = db.OpenRecordset(s, dbOpenSnapshot)

 ' loop through all records until the end
Do While Not r.EOF
sPathFile = sPath & r!Name & "_DataMacros.xml"
'Big thanks to Wayne Phillips for figuring out how to do this!
SaveAsText acTableDataMacro, r!Name, sPathFile
'have not tested SaveAsAXL -- please share information if you do
r.MoveNext
Loop

' give user a message
MsgBox "Done documenting data macros for " & r.RecordCount & " tables ", , "Done"

Application.FollowHyperlink CurrentProject.Path

Proc_Exit:
' close and release object variables
If Not r Is Nothing Then
r.Close
Set r = Nothing
End If

Set db = Nothing
Exit Sub

Proc_Err:
MsgBox Err.Description, , _
"ERROR " & Err.Number _
& " DocumentDataMacros"

Resume Proc_Exit
Resume

End Sub

РЕДАКТИРОВАТЬ: Горд указал, что вы хотели DataMacros, а не стандартные макросы. Я нашел некоторый код и проверил его (это работает) здесь

Когда вы переходите по этой ссылке, я протестировал верхнюю функцию, и она сохраняет информацию, касающуюся макросов вашей таблицы, для каждой таблицы в XML-документе. Это работает хорошо, подпирает тому, кто написал это.

Другие вопросы по тегам