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

Accessでフォーム上にサブフォーム(データシート)を作成すると、
新規レコード欄にも自動的に連結フィールドの値が表示されます。

このサブフォームをメインフォーム上に作らずに、
コマンドボタンクリック時にあるフィールドが一致する(上記で言う連結フィールド)データを表示したサブフォーム(データシート)を開くかたちにしたいのですが、そうすると当然ながら新規レコード欄には連結フィールドの値は表示されません。

これをメインフォーム上にサブフォームを作った時と同じように、新規レコード欄に連結フィールド値を表示させるにはどうしたら良いでしょうか?

サブフォームを開く段階で新規レコードに結合フィールドの値を(VBAで)入力する事も考えましたが、そうするともしそこにデータを入れるつもりじゃなくても1つのレコードとしてデータが残ってしまいます。

メインフォーム上に作ったサブフォームなら、新規レコードに結合フィールドの値は表示されているものの、その他のフィールドにデータを入力しなければ1つのレコードとしてデータが残ることはありません。

こういう事が可能かどうかわかりませんが、ご存知でしたら教えてくださいませ。
よろしくお願いします!

A 回答 (1件)

> そうするともしそこにデータを入れるつもりじゃなくても1つのレコードとして


> データが残ってしまいます。

コントロールに直接代入する代わりに、DefaultValue(プロパティシート上では
『データ』タブに『既定値』として表示されます)への代入にすれば、ほぼメイン
フォーム上にサブフォームとして作った場合と同様になるかと思います。


例えば、コマンドボタンのクリック時で処理するなら、以下の通り:

Private Sub コマンド0_Click()

  'データ入力用のフォーム(名前はPF1と仮定)を開く
  DoCmd.OpenForm "PF1"

  '呼び出し元の『ID』テキストボックスと同じ値を、上記フォームの『ID』
  'テキストボックスの既定値(DefaultValue)に設定
  Forms!PF1!ID.DefaultValue = Me!ID

End Sub


・・・以上です。
    • good
    • 0
この回答へのお礼

できました!!

クリック時、 DefaultValue に設定してみました。
IDはテキスト型ですが、ハイフン(-)を含む数字で入力していたので、ハイフンをマイナスと認識されて勝手に計算され、新規レコードに変な数字がでました。
何の数字か分からずいっとき悩みましたが、="Forms!メインフォーム!ID"とダブルクォーテーションで囲むことで解決しました。

プロパティのデータタブの規定値に =Forms![メインフォーム]![ID] を設定する方でもできました。
(何故か Me!ID にすると Name? が出てダメでした。)

"規定値"にすれば良かったんですね。
本当に助かりました!勉強になります。

ありがとうございました!

お礼日時:2010/01/27 09:14

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