- ベストアンサー
AccessVBAで他テーブルのデータを取得する方法について。
>はじめまして、私は、AccessVBAであるプログラム(仕事用)を作っていますが、初心者でもあり、行き詰まってしまいました。 テーブル1にフィールド1,2,3,4,5があり、各フィールドには、データが入力されています。 テーブル2には、フィールド1,2,3,4,5,6,7があり、フィールド1,2,3はテーブル1のフィールド1,2,3と同じデータが入力されています。 そこで、テーブル2のフィールド4,5に、テーブル1のフィールド4,5のデータを、プログラムを用いて取り込みたいのですが、どうすればいいのですか。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プログラムを書かずとも、更新クエリを使えばいいと思いますよ。 1:クエリを新規作成して、テーブル1、テーブル2をクエリに追加します。 2:んで、フィールド1,2,3をそれぞれマウスを使って結び付けます。 3:[クエリ]-[更新]を実行 4:テーブル2のフィールド4,5をクエリ下部のフィールド欄に追加 5:フィールド4のレコードの更新欄に「[テーブル1].[フィールド4]」などと入力(カギ括弧は不要) 6:フィールド5についても同様。 7:[!]ボタンをクリック。もしくは、クエリを保存してから、そのクエリをダブルクリックして実行する。 以上で、フィールド4,5の取り込みが完了するはずです。 尚、このクエリをプログラムから実行するには、 CurrentDB.Execute "更新クエリ名" を実行します。 Dim DB as Database Set DB = CurrentDB DB.Execute "更新クエリ名" MsgBox DB.RecordsAffected などとすると、変更のあったレコード数を知ることが出来ます。 蛇足になりますが、ご質問の内容に真っ正直に答えるとすると、 複数テーブルを参照する選択クエリを作成(上記を参照)して、 Dim RS As Recordset Set RS = CurrentDB.OpenRecordSet("クエリ名") で、複数テーブルをプログラムから開けます。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
「クエリを作成する」ではだめなんですか?
お礼
クエリを作成し、プログラムで実行することとし、成功しました。 プログラム完成までは、まだまだ先の長い話ですが今後ともよろしくお願いします。 ありがとうございました。
補足
回答ありがとうございます。 「谷尻かおり書」に更新クエリが掲載されていたので参考にましたが、他テーブルのオープン等プログラムの記述がわからずエラーとなっています。 そのあたりを、参考プログラムで詳しく教えていただけるとありがたいです。
お礼
今までは、エクセルで行っていたんですが、いろいろ問題もあり、データベースからレポートという、手法が必要となりました。 今回のプログラムは、3月末までに、レポートも含めて完成させなければなりません。 今まで、基礎となるデータを各テーブルを作成し、入力してきました。 今後は、そのデータを用いて、あらゆるレポートを作成しなければなりません。 今回の質問は、その過程における効率化(手作業は不可)の部分です。 したがって、何かのCmdボタンをクリックしただけで、基礎データにあるものは、条件が合えば抽出して、使用するという事柄でした。 一度、クエリについて勉強してみます。 また、ご相談する事と思いますが、よろしくお願いします。
補足
早速教えて頂いたとおり行ってみました。 クエリはうまくいったのですが、プログラムで実行する時に、DB AS Databaseの変数確保で、ユーザー定義は使用できないというエラーが、発生してしまいました。 当然ですね、DAOならいいのですがADOでプログラムを作っているのですから、宣言から異なる事に気がつきました。 そこで、 Dim cn As ADODB.Connection Set cn = CurrentProject.Connection cn.Execute "クエリ名" オブジェクトを変えてみたところ成功です。 プログラム完成までは、まだまだ先の長い話ですが今後ともよろしくお願いします。 ありがとうございました。