Как составить список объектов 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-документе. Это работает хорошо, подпирает тому, кто написал это.