- ベストアンサー
[Access]検索データの表示 など
(1)テーブルがA、Bと2つあります。 Aのフィールドは店舗ID、店舗名、支店名、店舗住所、店舗電話番号です。 Bは案件ID、店舗名、支店名、店舗住所、店舗電話番号、それ以外に20ほどフィールドがあります。 Bをフォームを使って入力するのですが、Bのフォームの電話番号欄に電話番号を入力し、コマンドボタンを押すとAの該当する店舗データがBのそのレコードの各対応するフィールドに反映されるようにしたいのですが、どのようにすればいいかわかりません。 また、該当する電話番号がなかった場合は該当なしのメッセージを表示させたいです。 (2)Bのフォームで新規レコードを作成したときに、自動で日付フィールドに現在の日付を、時刻フィールドに現在の時刻を入れたいです。 どなたか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答の追加をします。 前回は、BのサブフォームとしてAでOKが押されたとき、メイン側のBフォームに値を設定するとの考えで サブフォームAで下記のように記述してください forms![B]![支店名]=me![支店名] (前回のforms![A]![支店名]=me![支店名]はAのところが間違いです。すいませんでした) フォームA側からサブフォームBのフィールドを持ってくる場合は me![支店名]=forms![A]![サブフォーム名]![支店名] とすればうまくいくと思います。
その他の回答 (2)
- ganbaro
- ベストアンサー率45% (43/94)
ひとつの方法として、少し高度かもしれませんが (1)A用のフォーム(現在作られているもの) とB用のフォームを作成し AのフォームにBをサブフォームとして電話番号で表示連結します。 B側でOKであればAの設定フィールドにBの値をいれます B側で たとえば forms![A]![支店名]=me![支店名] とすればできます。 (2)については 更新日したときも自動的に修正されるようにするのであればレコードのイベントで Form_BeforeUpdate 追加の場合 Form_BeforeInsert に日付など me![更新日]=date() のようにコーディングすればいいのでは
お礼
回答ありがとうございます。 (1)サブフォームを作成し、店舗データを表示するまでには至ったのですが、データをAからBにインプットすることができません。 forms![A]のAにサブフォームの名前を入れてもそんなフォームありませんみたいなエラーになるのはサブフォームはフォームじゃないからなんでしょうか? また、サブフォームの表示ですが、どうやってもデータシートビューで開いてしまいます。 最初からフォームビューで開くにはどこをどう設定したらいいのでしょうか? (2)更新日に日付は変更しません。 今後の参考にさせて頂きます。
- NorthMole
- ベストアンサー率24% (20/82)
(1)マクロなりVBAを利用して、該当するフィールドに導入するしかないと思います。 Bのフォームの電話番号欄をコンボボックスにするのであれば、Columnを利用して突っ込む方法も考えられます。 (2)既定値に、日付の場合はDate()を、時刻の場合はTime()を設定すれば、いけると思いますが
お礼
ありがとうございました。 (1)具体的にはどういう方法がありますか? マクロでもVBAでも構いません。 (2)以前同じことをやったことがありましたが忘れてました。 今度は忘れないようにします。
お礼
ありがとうございます! うまくいきました! ですが・・・ なぜかおかしな現象が起きています。 確かにそれぞれの値が各対応するフィールドに格納されるのですが、 フォームでコンボボックスの形態をとっている箇所だけ文字が表示されません。(白背景に白文字のような状態) テーブルにはきちんと値が格納されていますし、文字色を変更すると見えるようにはなります。 また、文字色を変更しなくても一旦ファイルを終了してから再度開くと見えるようになっています。 コンボボックスだからいけないのでしょうか・・・?