MDB内のテーブルの有無を調べたい

解決


K  2002-12-18 17:13:53  No: 76691  IP: [192.*.*.*]

こんばんは、お世話になってます。

Win2K+VB6(sp4)+ADO2.5にて開発しています。
(動作はWin2Kにこだわらないけどとりあえず2000で)

その際にアプリケーションからMDBにアクセスしているのですが、
テーブルがあるかどうかを調べる方法を調査しています。
色々調べ、
・SELECTしてみてエラーが返ってくるかどうかで判断
・OpenSchemaメソッドでテーブル一覧を取得して判断
の2つ(特に後者)かなぁと思っているのですが、
よりスマートな方法はあるのでしょうか?
(理想はメソッド一発であるかないかわかる、ですよね)
もしご存知の方がいらっしゃいましたらお願いします。

編集 削除
魔界の仮面弁士  2002-12-18 17:42:27  No: 76692  IP: [192.*.*.*]

OpenSchemaだと、こうなりますよね。

If Cn.OpenSchema(adSchemaTables, Array(Empty, Empty, TableName, "TABLE")).EOF Then
    MsgBox TableName & "はありません"
Else
    MsgBox TableName & "が存在しています。"
End If


それ以外の手段となると、MSysObjectsを参照するか、
ADOX.Tablesを参照するか、DAO.TableDefsを参照するか
…といったところですね。

編集 削除
K  2002-12-19 11:35:34  No: 76693  IP: [192.*.*.*]

魔界の仮面弁士様、ありがとうございます。m(__)m
やはりOpenSchemaあたりがよさそうですね。
ADOXなどよりはこっちの方がスマートですし。
SQLでそんなのができないかなー?とか
色々調べたりたりたりしてみましたが、
OpenSchemaよりいい感じのが無かったです。

編集 削除