No.3ベストアンサー
- 回答日時:
どもども 田吾作8です。
←1増えた前回うそをいいました。
カタログのTable内には、クエリーも含みます。
以下のコードを一度実行してください。
'【機能】:テーブル・クエリーをイミディエイトウィンドウへ出力
'【パラメータ】 DBファイルのフルパス
Sub DebugTables(inDbFileName As String)
Dim strConnect As String
Dim wkCnn As ADODB.Connection
Dim wkCat As ADOX.Catalog
Dim wkTbl As Table
'接続の文字列
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & inDbFileName & ";"
'DBに接続
Set wkCnn = New ADODB.Connection
wkCnn.Open strConnect
'カタログにセット
Set wkCat = New ADOX.Catalog
wkCat.ActiveConnection = wkCnn
'テーブル・クエリーをイミディエイトウィンドウへ出力
For Each wkTbl In wkCat.Tables
Debug.Print wkTbl.Type & " : " & wkTbl.Name
Next wkTbl
PGMEND:
'それぞれ開放
Set wkTbl = Nothing
Set wkCat = Nothing
wkCnn.Close
Set wkCnn = Nothing
End Sub
出力をするとwkTbl.Type には、分類すると4タイプあることがわかると思います。
[View] はクエリーです。
[Table] はテーブルです。
他には [ACCESS TABLE]と[SYSTEM TABLE] が存在します。
これらは、アクセスで開いても普段は出てきませんよね。
しかし、設定すると見えるようになります。
1.DBをアクセスで開く
2.メニューバーの[ツール][オプション]を選択
3.[表示]タブのシステムオブジェクトのチェックをONする
これで見えるようになります。
もしアクセスのアドインを作成したりするようなのであれば、これらを使うかも知れませんが、普通ならば無視しててもいい、システム関係のテーブルです。
知ってると思いますが、あくまで余談で・・・
ADOは大変便利です・・・がっ!、注意点が一つ。
ADOで作成したクエリーはアクセスからは見ることが出来ません。
ADOはあまり使ったことがないようにお見受けしたので、参考までに・・・
でわでわ
No.4
- 回答日時:
さらに 田吾作7です ← もどった。
よくよくソースをみるとAdodc1ってのがあるってことは・・・
[ADO Data Control]を使用してるのかな?
strRecSource にはSQL文が入っていないといけないから、テーブルの一覧をすでに取得していないと、使えないよね。
SQL文って「select * from TableName」って感じだから、このソースを実行する前に、どのテーブルを参照するか決めてなきゃいけないので、たぶんテーブル一覧のルーチンはこのプログラムの前に実行することになると思うんだけど・・・
なので、
strRecSource = inputbox("Access's Table name needed")
から
Adodc1.Refresh
まで、書いてあるけど 質問の意図とちょっとはずれた部分のソースを書いているような気が・・・(ごめんね、責めてるわけじゃないよ)
なので、もし下記の回答が答えになってなかったら、リストを取得し何がしたいのかまで教えてもらえると、的確に答えやすいので、よかったらそれも教えてください。
でわでわ
お返事本当にありがたく思っています。
教えていただいた,DebugTablesの
For Each wkTbl In wkCat.Tables
Debug.Print wkTbl.Type & " : " & wkTbl.Name
Next wkTbl
の部分をリストにしてみました。
私はプログラム初心者で今回ADOなるものに触るのは
これが初めてです。
もちろん,SQLというのは聞いたことはあるのですが,
使ったことさえありません。
親切に教えていただいたにもかかわらず,
理解できなくて申し訳なく思っています。
ところで私が何をしたかったかというと,
ADOを触るためにおっしゃった通り,
[ADO Data Control]を使いました。
そして,ADOコントロールを使うために設定せよと,
参考書に書いていた通りに
connectionStringとRecordSourceを設定しようとしました。
しかし,connectionStringは下に書いた通り,コモンダイアログを
利用して,Accessファイルを指定できるのですが,
その中のテーブル名を指定できず困っていました。
一応,内容はそこそこ理解できたのですが,まだまだですので
また,頼らせてください。
重ね重ねありがとうございました。
No.2
- 回答日時:
ども 田吾作7です。
ADOでの接続ですよね?なんか、先にアドバイスされてる方がDAOでの接続の場合を説明しているみたいなので、ちょっとカキコしますね。
現在「Microsoft ActiveX Data Object 2.x Library」を参照設定してますね?
「Microsoft ADO Ext. 2.x DDL and Security」は参照設定してますか?してなかったら、参照設定に追加してください。
Dim wkCnn As ADODB.Connection
Dim wkCat As ADOX.Catalog
’まずADOでDBに接続する
wkCnn.Open 接続の文字列
’カタログにセット
Set wkCat = New ADOX.Catalog
wkCat.ActiveConnection = wkCnn
wkCatをデバッグしてください。"TABLE"と"VIEW"というのがあります。
それがテーブル一覧、クエリー一覧に該当します。
でわでわ・・・
お返事ありがとうございました。
ご指摘の通り「Microsoft ADO Ext. 2.x DDL and Security」は
参照設定していませんでした。
そして参照設定すると,
Dim wkCat As ADOX.Catalog
が入力できるようになりました。
が, まだわかりません。
Dim strRecSource as string
strRecSource = inputbox("Access's Table name needed")
Adodc1.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & PathName
Adodc1.RecordSource = strRecSource
Adodc1.Refresh
なんて,していたのですが,これをどうすればよいのでしょうか
Dim wkCnn as adodb.connection
Dim WkCat as ADOX.Catalog
Set wkCnn = New ADODB.Connection
wkCnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & PathName
Set wkCat = New ADOX.Catalog
wkCat.ActiveConnection = wkCnn
Label.Caption = wkCat.Tables(2).Name
なんてしてみてlabelを見てみると
「MSysACEs」なんて出てきます。
ヒントをもう少しいただけないでしょうか。
No.1
- 回答日時:
(時間が経ってしまっていますが、、、)
DatabaseオブジェクトのTableDefsコレクションのnameプロパティを
使うとAccessファイル中のテーブル名が返ってくるのではないでしょうか?
[db]をデータベースとして、[db.TableDefs(i).name]
をi=0から[db.TableDefs.count-1]まで繰り返して見ていけば
リストにする事も可能かと思います。
もしくは、、、
[MSysObjects]テーブルを見れば、他のオブジェクトと一緒に
テーブルも見えるはずです。これはシステムオブジェクトなので
[ツール][オプション]の[システムオブジェクト]にチェックを
入れると表示されるはず。
お返事ありがとうございました。
お礼の返事が遅れてすいません。
-boya-さんが言われているとおりしてみたのですが,
db.TableDefs(i).name
は実行されませんでした。
ADOとDAOの違いもわからない私なのですが,
時間を割いてくださりありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- その他(データベース) Microsoft Accessについて 1 2022/06/06 16:20
- その他(データベース) Accessのリンクテーブルについて 1 2023/05/20 16:10
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- その他(プログラミング・Web制作) Accessの代わりのノンプログラムデータベース作成 4 2022/10/21 09:26
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
C#でaccdbファイルのテーブルの一覧を取得したいです。
C言語・C++・C#
-
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
-
4
アクセスVBAのMe!と[ ]
Access(アクセス)
-
5
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
6
Accessでテーブルやクエリのリストを作りたい。
Access(アクセス)
-
7
Accessで別mdbのテーブルをコピー
その他(プログラミング・Web制作)
-
8
「RunSQL」と「Execute」の違い
Access(アクセス)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
11
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
12
AccessVBA でテーブルをインポートする方法
その他(データベース)
-
13
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
14
ADO VBA 実行時エラー3021
Visual Basic(VBA)
-
15
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
18
AccessのテーブルにVBAでフィールドを追加したい
Access(アクセス)
-
19
ACCESSでコントロールソースの変更
Access(アクセス)
-
20
Accessのテーブルを既存のExcelファイルへエクスポートしたいんですが
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルのエクスポートでソ...
-
VBとアクセスでSQL文に変...
-
他のMDBのテーブルに追加したい
-
ADO&mdbで、リンクテーブルの...
-
エクセルのテーブルを解除する...
-
SQLを発行とは?クエリの作成と...
-
html javascriptにてWeb SQLを...
-
ワークテーブルの作成について
-
ACCESSのテーブル名をリストに...
-
AccessVBAコミットとロールバッ...
-
★クリスタルレポートの元になる...
-
DataGridの中身をDataSetにテー...
-
DataGridViewに複数テーブルの...
-
(泣)VBscriptでinnerhtmlを使...
-
HTMLのテーブルの行数が多くな...
-
アクセステーブル、リンクとロ...
-
オートナンバー型を変換したい
-
Accessで別mdbのテーブルをコピー
-
COBOLのINVALID KEYが理解でき...
-
パイソンでのプログラミングに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLを発行とは?クエリの作成と...
-
VBとアクセスでSQL文に変...
-
エクセルのテーブルを解除する...
-
AccessからExcelへエクスポート...
-
他のMDBのテーブルに追加したい
-
Accessで別mdbのテーブルをコピー
-
COBOLのINVALID KEYが理解でき...
-
手動または分散トランザクショ...
-
HTMLのテーブルの行数が多くな...
-
ACCESSのテーブル名をリストに...
-
CSVファイルのエクスポートでソ...
-
『列名 '担当者CD' があいま...
-
DataGridViewに複数テーブルの...
-
【ADO】「Execute」を使うと...
-
DataGridの中身をDataSetにテー...
-
アクセステーブル、リンクとロ...
-
Excel複数シートをaccessへ一括...
-
ACCESS2010 実行時エラー 2766
-
DAOでフィールドのデータ型を変...
-
ExcelVBAからAccessMDB内のテー...
おすすめ情報