■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
|
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った): |
■ ページの共有: |
[ サイト内検索 ]
![]()
カスタム検索
|
#33707-0mdb ファイルの中にあるテーブル名の取得匿名337072000-11-19(日) 13:06
#33709-0RE#33707:mdb ファイルの中にあるテーブル名の取得モリブデンX2000-11-19(日) 13:47
#33747-0mdb ファイルの中にあるテーブル名の取得(続き)匿名337472000-11-20(月) 14:06
#33751-0RE#33747:mdb ファイルの中にあるテーブル名の取得(続き)魔界の仮面弁士2000-11-20(月) 14:25
#33777-0RE#33751:mdb ファイルの中にあるテーブル名の取得(続きの続き)モリブデンX2000-11-20(月) 20:40
#33709-0RE#33707:mdb ファイルの中にあるテーブル名の取得モリブデンX2000-11-19(日) 13:47
#33747-0mdb ファイルの中にあるテーブル名の取得(続き)匿名337472000-11-20(月) 14:06
#33751-0RE#33747:mdb ファイルの中にあるテーブル名の取得(続き)魔界の仮面弁士2000-11-20(月) 14:25
#33777-0RE#33751:mdb ファイルの中にあるテーブル名の取得(続きの続き)モリブデンX2000-11-20(月) 20:40
匿名337072000-11-19(日) 13:06
例えば、『ある mdb ファイルの中に sample というテーブルが存在しなかった場合には、 sample というテーブルを作成する』 という操作をしたいのですが。 現在は、 sample というテーブルがあるものとして処理を行い、 OpenRecordset("select ..... from sample") の所で、エラーが発生したら、テーブルがなかったのだなぁ、 と分かるので、そこで改めて sample というテーブルを作成するようにしています。 しかし、この方法だと不可能な点があるので、 エラートラップを使わずに、前もって存在するテーブルを知りたいのです。 どうか、ご教授願います。
モリブデンX2000-11-19(日) 13:47
> 例えば、『ある mdb ファイルの中に > sample というテーブルが存在しなかった場合には、 > sample というテーブルを作成する』 > という操作をしたいのですが。 > > 現在は、 sample というテーブルがあるものとして処理を行い、 > OpenRecordset("select ..... from sample") > の所で、エラーが発生したら、テーブルがなかったのだなぁ、 > と分かるので、そこで改めて > sample というテーブルを作成するようにしています。 > > しかし、この方法だと不可能な点があるので、 > エラートラップを使わずに、前もって存在するテーブルを知りたいのです。 > どうか、ご教授願います。 ADOXというものを使うと簡単です。 「Microsoft ADO Ext.2.1 for DDL and Security」に参照設定を行います。 Dim xCatalog As ADOX.Catalog Dim xTable As ADOX.Table Set xCatalog = New ADOX.Catalog Set xCatalog.ActiveConnection = cn ' 別に作成したADODB.Connection For Each xTable In xCatalog.Tables If xTable.Type = "TABLE" Then Debug.Print xTable.Name End If Next これでテーブル名の一覧が、イミディエイトペインに出力されます。 OpenSchemaでもできたと思いますが、こちらの方が簡単だと思います。
匿名337472000-11-20(月) 14:06
> ADOXというものを使うと簡単です。 > 「Microsoft ADO Ext.2.1 for DDL and Security」に参照設定を行います。 > > Dim xCatalog As ADOX.Catalog > Dim xTable As ADOX.Table > > Set xCatalog = New ADOX.Catalog > Set xCatalog.ActiveConnection = cn ' 別に作成したADODB.Connection > > For Each xTable In xCatalog.Tables > If xTable.Type = "TABLE" Then > Debug.Print xTable.Name > End If > Next > > これでテーブル名の一覧が、イミディエイトペインに出力されます。 > OpenSchemaでもできたと思いますが、こちらの方が簡単だと思います。 回答ありがとうございました。でも... ADODB の使い方が分かりません。 『Microsoft ActiveX Data Objects 2.0 Library』を参照設定しないと使えないですよね? ヘルプを開こうとしても、ファイルがありませんというメッセージが出てしまいます。
魔界の仮面弁士2000-11-20(月) 14:25
> ADODB の使い方が分かりません。 > 『Microsoft ActiveX Data Objects 2.0 Library』を参照設定しないと使えないですよね? ではなくて、 >> 「Microsoft ADO Ext.2.1 for DDL and Security」に参照設定を行います。 ですよ。 多分、以下のコメントを見て、 >> Set xCatalog.ActiveConnection = cn ' 別に作成したADODB.Connection 誤解されたのでしょうけれど、ADODBを参照設定しなくても、ADOXは使えます。 その場合、Connectionオブジェクトを渡す代わりに、単純に接続文字列だけを渡すようにすればOKです。 xCatalog.ActiveConnection = 接続文字列 開発環境が、Access2000であるならば、最初からADODBが組み込まれているはずなので、 Set xCatalog.ActiveConnection = CurrentProject.Connection というのもアリです。 でもって、レイトバインドなら、参照設定すらいらなくて、 >> Dim xCatalog As ADOX.Catalog >> Dim xTable As ADOX.Table これはそれぞれ、As Objectに変更し、 >> Set xCatalog = New ADOX.Catalog ここを、Set xCatalog = CreateObject("ADOX.Catalog") にすれば、そのまま動きます。 ……それと、使っているのがMDBが、Access97形式なのであれば、 ADOXなんて使わずに、DAOのTableDefオブジェクトを使うのが無難です。 > ヘルプを開こうとしても、ファイルがありませんというメッセージが出てしまいます。 ヘルプをインストールしていないのでしょう、きっと。(^^; バージョンにもよりますが、「ADO260.CHM」だとか、「ADO210.CHM」などというファイルのハズです。
モリブデンX2000-11-20(月) 20:40
> その場合、Connectionオブジェクトを渡す代わりに、単純に接続文字列だけを渡すようにすればOKです。 > xCatalog.ActiveConnection = 接続文字列 > > 開発環境が、Access2000であるならば、最初からADODBが組み込まれているはずなので、 > Set xCatalog.ActiveConnection = CurrentProject.Connection > というのもアリです。 そんな簡単な技があったとは知りませんでした。精進します。ありがとうございます。
このページと関連する記事:
#14688-0SQLサーバテーブル主キー項目数2000-01-31(月) 18:05#8615-0テーブル件数の取得2000-06-06(火) 18:39
#7954-0モジュールから指定したテーブルが存在するか確認するには?1999-10-21(木) 18:00
#822-0テーブルに1列追加する方法2001-11-01(木) 11:33
#822-1テーブルに1列追加する方法2001-11-01(木) 02:33
#1982-0テーブル名にスペース2002-04-16(火) 17:19
#2358-0サーバー接続でサーバーがみつからない2002-06-03(月) 10:55
#1289-0Access97の参照設定がエラーになってしまいます。2001-12-18(火) 18:57
#2061-0更新時にエラーが発生します。2002-04-25(木) 14:46
#28117-0データーグリッドに表示させたいのですが・・・・2002-04-09(火) 03:40