Sqlを使用してmsaccess内のすべてのテーブルを検索できますか?.
sqlserverで行うように
select * from sys.tables
sQLiteで
SELECT * FROM sqlite_master where type='table'
MSysObjects を使用します
SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0
MS Accessにはいくつかのシステムテーブルがあり、デフォルトではテーブルリストに表示されません。あなたはそれらを示すことができます。
MS Access 2007では、テーブルリストを右クリックしてNavigation Options
を選択します。フォームの下部にShow System Objects
チェックボックスがあります。チェックすると、システムテーブルがテーブルリストに表示されます。それらはすべてMSys
で始まります。
または、オプションフォームはアプリケーションメニューからアクティブ化できます-ボタンAccess options
をクリックします-> Current Database
を選択すると、Navigation Options
ボタンが表示されます。
MsAccessツールを使用して、構造と内容を調べ、すべてのシステムテーブルのクエリを生成できます。
アレックスが答えたように、テーブル情報はMSysObjects
にあります
次のクエリは、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で作成/テスト
この説明では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
SELECT name FROM MSysObjects where database <> ''
このクエリを使用して、すべてのリンクテーブルの名前を取得します
Access 2013では、私は
MSysObjects WHEREタイプから名前を選択= 4