アプリ版:「スタンプのみでお礼する」機能のリリースについて

>はじめまして、私は、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のデータを、プログラムを用いて取り込みたいのですが、どうすればいいのですか。

よろしくお願いします。

A 回答 (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("クエリ名")

で、複数テーブルをプログラムから開けます。

この回答への補足

早速教えて頂いたとおり行ってみました。
クエリはうまくいったのですが、プログラムで実行する時に、DB AS Databaseの変数確保で、ユーザー定義は使用できないというエラーが、発生してしまいました。
当然ですね、DAOならいいのですがADOでプログラムを作っているのですから、宣言から異なる事に気がつきました。
そこで、
Dim cn As ADODB.Connection
Set cn = CurrentProject.Connection
cn.Execute "クエリ名"
オブジェクトを変えてみたところ成功です。
プログラム完成までは、まだまだ先の長い話ですが今後ともよろしくお願いします。
ありがとうございました。

補足日時:2002/02/10 17:02
    • good
    • 1
この回答へのお礼

今までは、エクセルで行っていたんですが、いろいろ問題もあり、データベースからレポートという、手法が必要となりました。
今回のプログラムは、3月末までに、レポートも含めて完成させなければなりません。
今まで、基礎となるデータを各テーブルを作成し、入力してきました。
今後は、そのデータを用いて、あらゆるレポートを作成しなければなりません。
今回の質問は、その過程における効率化(手作業は不可)の部分です。
したがって、何かのCmdボタンをクリックしただけで、基礎データにあるものは、条件が合えば抽出して、使用するという事柄でした。
一度、クエリについて勉強してみます。
また、ご相談する事と思いますが、よろしくお願いします。

お礼日時:2002/02/09 21:28

「クエリを作成する」ではだめなんですか?

この回答への補足

回答ありがとうございます。
「谷尻かおり書」に更新クエリが掲載されていたので参考にましたが、他テーブルのオープン等プログラムの記述がわからずエラーとなっています。
そのあたりを、参考プログラムで詳しく教えていただけるとありがたいです。

補足日時:2002/02/09 18:59
    • good
    • 0
この回答へのお礼

クエリを作成し、プログラムで実行することとし、成功しました。
プログラム完成までは、まだまだ先の長い話ですが今後ともよろしくお願いします。
ありがとうございました。

お礼日時:2002/02/10 17:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A