мы можем перечислить все таблицы в базе данных msaccess, используя sql? - PullRequest
17 голосов
/ 13 апреля 2010

Можем ли мы найти все таблицы в msaccess, используя sql.

как мы делаем в sqlserver

select * from sys.tables  

в sqlite

SELECT * FROM sqlite_master where type='table' 

Ответы [ 5 ]

18 голосов
/ 13 апреля 2010

Использование MSysObjects

SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0
2 голосов
/ 13 апреля 2010

Ms Access имеет несколько системных таблиц, которые по умолчанию скрыты от списка таблиц. Вы можете показать им.

В Ms Access 2007 щелкните правой кнопкой мыши список таблиц и выберите Navigation Options. Внизу формы вы найдете флажок Show System Objects. Проверьте это, и системные таблицы появятся в списке таблиц. Все они начинаются с MSys.
В качестве альтернативы, форма параметров может быть активирована из меню приложения - нажмите кнопку Access options -> выберите Current Database и там есть кнопка Navigation Options.

Теперь вы можете проверять структуру и содержимое и генерировать запросы всех системных таблиц с помощью инструментов MsAccess.

Как ответил Алекс, информация о таблице в MSysObjects

1 голос
/ 18 июня 2014

Следующий запрос помог мне осуществить редизайн / миграцию с MS Access на C # и SQL Server.

Примечание: объединяет ответы, предоставленные как Алекс К. , так и KTys .
Опубликовано здесь с убеждением, что это будет полезно кому-то еще (или мне, если мне придется сделать это снова)

SELECT
  SWITCH (
    [type]=-32764,'Report' ,
    [type]  =  1, 'Table, local' ,
    [type]  =  3, 'obj Containers' ,
    [type]  =  4, 'Table, link odbc' ,
    [type]  =  5, 'Query' ,
    [type]  =  6, 'Table, link access' ,
    [type]  =  8, 'SubDataSheets' ,
    TRUE, [type]
  ) AS [type name (or #)]
  , name AS [Table Name]
FROM
  MSysObjects 
ORDER BY 
  2, 3


Обратите внимание на предупреждение от KTys (номера типов могут быть изменены)
Добавьте , * к предложению select, чтобы увидеть другие поля (например, connect); они не помогли мне.

Создано / протестировано с MS Access 2013

0 голосов
/ 08 октября 2013
SELECT name FROM MSysObjects where database <> ''

используйте этот запрос, чтобы получить имена всех связанных таблиц

0 голосов
/ 27 мая 2013

Это обсуждение дает список значений типа. Имейте в виду, что MS не гарантирует одинаковые значения от версии к версии.

Type    TypeDesc
-32768  Form
-32766  Macro
-32764  Reports
-32761  Module
-32758  Users
-32757  Database Document
-32756  Data Access Pages
1   Table - Local Access Tables
2   Access Object - Database
3   Access Object - Containers
4   Table - Linked ODBC Tables
5   Queries
6   Table - Linked Access Tables
8   SubDataSheets
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...