電子書籍の厳選無料作品が豊富!

以前Accessテーブルの規定値に関して、

「フィールドAの日付の30日後の日付をフィールドBの規定値とする方法」

を質問させて頂き以下のVBAで解決したのですが、これを別テーブルのフィールドCの規定値とすることも可能でしょうか?
あと、VBAを勉強するのに良いサイトがあれば教えて頂きたいです。よろしくお願いいたします。

Private Sub フィールドA_AfterUpdate()
フィールドB.Value = DateAdd("d", 30, フィールドA.Value)
End Sub

質問者からの補足コメント

  • テーブルの構造ですが、後者の
    「別テーブルのデータは子のように必ず親データが元テーブルに発生」の方です。
    テーブルは以下のような感じで、フォームではサブフォームを使用して別テーブルのデータを表示させています。こんな感じの補足で大丈夫でしょうか?

    テーブル
    ID フィールドA フィールドB

    別テーブル
    ID フィールドC

      補足日時:2015/05/13 10:53
  • 早速のご回答ありがとうございます。
    きちんとフォーム名とフィールドC名を指定しているのですが、なぜか「実行時エラー424 オブジェクトが必要です」というエラーが出てしまいます。原因として何か考えられますでしょうか?

      補足日時:2015/05/13 13:21
  • 2つのフォームを開きながらでもダメのようです・・

      補足日時:2015/05/13 16:04
  • 別フォームのIDを主キーに設定し(データは一つしかなかったようだったので)、当フォームにフィールドCをもってくることで解決しました!
    分かりやすく教えて頂きありがとうございました!

      補足日時:2015/05/13 16:35

A 回答 (3件)

元フォームのレコードが確定される前に、子レコードが発生してしまう可能性があるので、どのタイミングで値をセットするべきかは悩みどころですが、、、



Form_フォーム名!フィールドC.Value = フィールドB.Value
などのようにして、値をセットすることはできます。

そもそも、RDB(の端くれ)を使っているので、値が必ず親データの値になるのであれば、
インデックス等で紐付け、必要な際に参照に行くほうが間違いがなくストレートなやり方です。

vbaの勉強するサイト、、、
検索して一番最初に出てきたサイトだけど、目次を見るかぎりでは単純だけどほぼ全般的に網羅されていて、わかりやすそうだと思います。

http://accessvba.pc-users.net/
    • good
    • 0
この回答へのお礼

ご丁寧に教えて頂きありがとうございました!
業務的にもかなり助かりました!
あと教えて頂いたサイトで勉強しようと思います

お礼日時:2015/05/14 10:30

フォームは開いた状態で実行していますか?

    • good
    • 0

えーと、これは、、、



元テーブルのデータに対して、別テーブルのデータが1つのみ必ず発生するのか、
別テーブルのデータは子のように必ず親データが元テーブルに発生するのかによって、
作り方を工夫する必要があります。 (のでそのあたりの補足をお願いいたします) 

そもそも、連結フォームでデータを作る場合は、レコードの移動ボタンを押下したときに
作られるので、かっちりとしたデータ構造のものを作り上げるには、いくつか問題が
起きる可能性があります。
・ブランクデータができてしまう
・データを入れたがレコードが作成されていない状態でフォームを閉じてしまうと、、、

それらを解決するためには、SQL(もしくはレコード作製クエリ)でレコードを作るのが、
無難です。
    • good
    • 0

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