Как заставить Microsoft Access сформировать список таблиц базы данных?
Я наткнулся на SQL-запрос, предложенный кем-то надругой веб-сайтОднако, похоже, в Access нет интерфейса, который бы просто позволял выполнять созданные пользователем запросы, подобные приведенным ниже...
SELECT [Name]
FROM MSysObjects
WHERE Type In (1,4,6)
AND Left([Name] , 4) <> "MSys"
ORDER BY [Name]
решение1
Вы можете запустить SQL-код, который есть в запросе, потому что он им и является.
- Создайте новый запрос в конструкторе запросов, а не с помощью мастера.
- Закройте окно таблицы.
- Измените вид на
SQL
и введите свою строку. - Нажмите
RUN
.
решение2
Вы можете сделать это следующим DAO
образом VB
:
Public Sub ListTablesDAO()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
If (tdf.Attributes And dbSystemObject) = 0 Then
Debug.Print tdf.Name
End If
Next tdf
db.Close: Set db = Nothing
End Sub
и вот так сADO
Public Sub ListTablesADO()
Dim rs As ADODB.Recordset
Set rs = CurrentProject.Connection.OpenSchema(adSchemaTables)
Do Until rs.EOF
If rs!TABLE_TYPE = "TABLE" Then
Debug.Print rs!TABLE_NAME
End If
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
End Sub
DAO и ADO предоставляют две разные объектные модели для баз данных. Какую версию вы выберете, зависит от ваших предпочтений. Вам также понадобится ссылка на соответствующие библиотеки:
Вы можете добавить эти ссылки в меню Tools > References
: