- ベストアンサー
Accessのテーブルのリンクについて
Access2002で、異なるファイル間でテーブルをリンクして使用しています。 「A」データベースと「B」データベースがあり、 「A」データベースのテーブルを「B」データベースへリンクさせています。 「B」には「A」からリンクさせているテーブルと同一の形式のテーブルがあり、 普段は「B」所有のテーブルを使用しているのですが、「保存」ボタンクリック時に 「A」からリンクさせているテーブルに「B」の内容をコピーするマクロを作成したいのですが、 値の代入がうまく行きません。 どうすればデータをコピーできるでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
返事遅くなりました。 追加クエリの抽出条件をそのサブフォームのフィールド名を使った記述に変えれば 良いのではないでしょうか。 たぶん抽出条件に=[通し番号]の様になっていると思うのでサブフォーム名とその フィールド名を使った記述にすればダイアログは出ずに追加できます。
その他の回答 (3)
- O_cyan
- ベストアンサー率59% (745/1260)
>(表示しているレコードをボタンクリック時にコピー)に行いたいのですが、「現 >在表示しているレコード」を抽出条件にするにはどう記述すればよいでしょうか。 作った追加クエリに抽出条件を記述すれば良いんです。 例えばフォームに表示させる抽出条件があるのでしたら同じ抽出条件を追加クエリ に記述すればフォームに表示されるレコードと同じレコードを抽出してテーブルに 追加できます。
補足
返事が遅くなり、申し訳ありません。 いろいろ試したのですが、不具合が起こってしまいます・・・。 サブフォームの表形式で表示されたデータの各レコードにボタンがあり、 ボタンクリック時にそのレコードのみを追加したいと思っています。 抽出条件として、サブフォーム内の通し番号を取得するようにしているのですが、 通し番号を入力するダイアログボックスが立ち上がり、入力しなければ 追加が行なわれません。入力すれば追加できるのですが・・・。
マクロだと、変数が使えないので、結構難しいことしてますよね。 マクロ自体に問題がないとすれば、 テーブルのほうに問題はないでしょうか。 たとえば、同一キーのレコードがすでに存在するとか、 Bでオートナンバーでつけてしまった番号がAのファイルには合わないとか、 書式条件が違う(これはなさそう)などです。 追加クエリーにしたほうが簡単だと思います。 同一レコードを上書きする場合は、追加クエリーと更新クエリーに分けて、マクロからクエリーを呼び出すようにしてはどうでしょうか。
- O_cyan
- ベストアンサー率59% (745/1260)
>「A」からリンクさせているテーブルに「B」の内容をコピーするマクロを・・ 一番簡単な方法はテーブルの追加クエリを作りBのテーブルのレコードをAのテー ブルに追加するのが簡単だと思いますが。 マクロにそのクエリを開くで指定しボタンのクリックイベントにそのマクロを設定 してください。
補足
回答ありがとうございます。 返答が送れて申し訳ありません。 追加クエリが作成できました!ありがとうございます。 そこでもう一つ質問なんですが、 普通に追加クエリを起動させるだけだとすべてのレコードがコピーされてしまいますよね。 これを任意(表示しているレコードをボタンクリック時にコピー)に行いたいのですが、「現在表示しているレコード」を抽出条件にするには、どう記述すればよいでしょうか。
お礼
回答ありがとうございます。 ちょっと説明不足で申し訳ありませんでした。 無事解決しました。 原因は、サブフォームのフィールドの指定の仕方が悪いせいでした。 [forms]![サブフォーム名]![フィールド名]ではなく、 [forms]![メインフォーム名][サブフォーム名]![フィールド名]にすれば解決しました。