質問: MS Access形式の MDBファイル に対してODBC経由でアクセスするときに,テーブル一覧を取得したいのですが,どのようなSQL文を書いたらいいでしょうか?
回答: SQLは下記のとおりです。 ``` SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>'~') AND (Left([Name],4) <> 'Msys') AND (MSysObjects.Type)=1 ORDER BY MSysObjects.Name ``` *(Left([Name],1)<>'~')は削除テーブルの除外のため *(Left([Name],4) <> 'Msys')はシステムテーブル除外のため *(MSysObjects.Type)=1は普通のテーブル (Type=4はMDBテーブルのリンク。Type=6は外部DBのリンク) ただし、ODBC経由では権限が無いので読み取りできないかも知れません。 下記の操作でMsysObjectsに権限を与えます。 1.AccessでMDBを開く。 2.[ツール]=>[オプション]で「隠しオブジェクト」「システムオブジェクト」を表示するよう設定する 3.[ツール]=>[セキュリティ]=>[ユーザグループの権限]でODBCでログインするに対し、「MsysObjects」に「読み取り」を選択 (ODBCでユーザID/パスワードを無しにしているなら、「管理者」に対して「読み取り」を与えて下さい)