web-dev-qa-db-ja.com

SQLを使用してmsアクセスデータベースのすべてのテーブルを一覧表示できますか?

Sqlを使用してmsaccess内のすべてのテーブルを検索できますか?.

sqlserverで行うように

select * from sys.tables  

sQLiteで

SELECT * FROM sqlite_master where type='table' 
17
Thunder

MSysObjects を使用します

SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0
18
Alex K.

MS Accessにはいくつかのシステムテーブルがあり、デフォルトではテーブルリストに表示されません。あなたはそれらを示すことができます。

MS Access 2007では、テーブルリストを右クリックしてNavigation Optionsを選択します。フォームの下部にShow System Objectsチェックボックスがあります。チェックすると、システムテーブルがテーブルリストに表示されます。それらはすべてMSysで始まります。
または、オプションフォームはアプリケーションメニューからアクティブ化できます-ボタンAccess optionsをクリックします-> Current Databaseを選択すると、Navigation Optionsボタンが表示されます。

MsAccessツールを使用して、構造と内容を調べ、すべてのシステムテーブルのクエリを生成できます。

アレックスが答えたように、テーブル情報はMSysObjectsにあります

2
zendar

次のクエリは、MS AccessからC#およびSQL Serverへの再設計/移行の範囲を特定するのに役立ちました。

注: Alex K。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で作成/テスト

1

この説明ではType値のリストを示します。 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
0
KTys
SELECT name FROM MSysObjects where database <> ''

このクエリを使用して、すべてのリンクテーブルの名前を取得します

0
Parth Gupta

Access 2013では、私は

MSysObjects WHEREタイプから名前を選択= 4

0
Phillip Hanson