[リストへもどる]
一括表示

投稿時間:2002/09/20(Fri) 16:27
投稿者名:若葉
Eメール:
URL :
タイトル:
ADOでテーブルの存在の確認
ADO接続でAccess2000のMDBの中に、指定のテーブルがあるかどうか確認したいのですが、
SQL文で結果セットを取得する前に確認する方法はないでしょうか。
アドバイスよろしくお願いします。

投稿時間:2002/09/20(Fri) 16:56
投稿者名:A221
Eメール:
URL :
タイトル:
Re: ADOでテーブルの存在の確認
On Errorで引っ掛けてErrオブジェクトのNumberを調べてみては?

&H80040e37がテーブルが存在しない時のエラーコードのようです。

> ADO接続でAccess2000のMDBの中に、指定のテーブルがあるかどうか確認したいのですが、
> SQL文で結果セットを取得する前に確認する方法はないでしょうか。
> アドバイスよろしくお願いします。

投稿時間:2002/09/20(Fri) 17:00
投稿者名:とろ
Eメール:
URL :
タイトル:
Re: ADOでテーブルの存在の確認
> ADO接続でAccess2000のMDBの中に、指定のテーブルがあるかどうか確認したいのですが、
> SQL文で結果セットを取得する前に確認する方法はないでしょうか。

ADO の場合は、テーブルの情報やフィールドの情報などは、
すべてクエリ(スキーマ?)を発行することによって、取得します。
例えば、次のような感じ。

  Dim oConnection As ADODB.Connection
  Dim oRecordset  As ADODB.Recordset
  
  Set oConnection = New ADODB.Connection
  oConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Sample.mdb;"
  
  Set oRecordset = oConnection.OpenSchema(adSchemaTables)
  Do While oRecordset.EOF = False
    Debug.Print oRecordset!TABLE_NAME
    oRecordset.MoveNext
  Loop
  
  oRecordset.Close
  oConnection.Close
  
  Set oRecordset = Nothing
  Set oConnection = Nothing

投稿時間:2002/09/21(Sat) 00:03
投稿者名:若葉
URL :
タイトル:
Re^2: ADOでテーブルの存在の確認
やはりクエリを発行しないと確認できないんですね。
接続に関する理解があいまいで、誤解していたようです。
rs!TABLE_NAMEで確認してみます。
ありがとうございました!

投稿時間:2002/09/25(Wed) 13:22
投稿者名:とろ
Eメール:
URL :
タイトル:
Re: ADOでテーブルの存在の確認
> ADO接続でAccess2000のMDBの中に、指定のテーブルがあるかどうか確認したいのですが、
> SQL文で結果セットを取得する前に確認する方法はないでしょうか。

ADOX (ADO Ext) も使って良いならば、下のようにすることもできます。

  Dim oConnection As ADODB.Connection
  Dim oCatalog    As ADOX.Catalog
  Dim oTable      As ADOX.Table
  
  Set oConnection = New ADODB.Connection
  oConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Sample.mdb;"
  
  Set oCatalog = New ADOX.Catalog
  oCatalog.ActiveConnection = oConnection
  
  For Each oTable In oCatalog.Tables
    Debug.Print oTable.Name
  Next
  
  oConnection.Close
  
  Set oTable = Nothing
  Set oCatalog = Nothing
  Set oConnection = Nothing