Accessでサブフォームを開く際に新規レコードに連結フィールドの値を表示させる方法

このQ&Aのポイント
  • Accessでサブフォーム(データシート)を開く際に、新規レコードに連結フィールドの値を表示させる方法について教えてください。
  • 通常、サブフォームを開く際には、新規レコードには連結フィールドの値が表示されませんが、メインフォーム上にサブフォームを作成する場合は表示されます。
  • しかし、サブフォームをコマンドボタンクリック時に開く場合は連結フィールドの値が表示されないため、開く際に連結フィールドの値を表示させる方法が知りたいです。
回答を見る
  • ベストアンサー

Access 連結フィールド値を自動で表示

Accessでフォーム上にサブフォーム(データシート)を作成すると、 新規レコード欄にも自動的に連結フィールドの値が表示されます。 このサブフォームをメインフォーム上に作らずに、 コマンドボタンクリック時にあるフィールドが一致する(上記で言う連結フィールド)データを表示したサブフォーム(データシート)を開くかたちにしたいのですが、そうすると当然ながら新規レコード欄には連結フィールドの値は表示されません。 これをメインフォーム上にサブフォームを作った時と同じように、新規レコード欄に連結フィールド値を表示させるにはどうしたら良いでしょうか? サブフォームを開く段階で新規レコードに結合フィールドの値を(VBAで)入力する事も考えましたが、そうするともしそこにデータを入れるつもりじゃなくても1つのレコードとしてデータが残ってしまいます。 メインフォーム上に作ったサブフォームなら、新規レコードに結合フィールドの値は表示されているものの、その他のフィールドにデータを入力しなければ1つのレコードとしてデータが残ることはありません。 こういう事が可能かどうかわかりませんが、ご存知でしたら教えてくださいませ。 よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> そうするともしそこにデータを入れるつもりじゃなくても1つのレコードとして > データが残ってしまいます。 コントロールに直接代入する代わりに、DefaultValue(プロパティシート上では 『データ』タブに『既定値』として表示されます)への代入にすれば、ほぼメイン フォーム上にサブフォームとして作った場合と同様になるかと思います。 例えば、コマンドボタンのクリック時で処理するなら、以下の通り: Private Sub コマンド0_Click()   'データ入力用のフォーム(名前はPF1と仮定)を開く   DoCmd.OpenForm "PF1"   '呼び出し元の『ID』テキストボックスと同じ値を、上記フォームの『ID』   'テキストボックスの既定値(DefaultValue)に設定   Forms!PF1!ID.DefaultValue = Me!ID End Sub ・・・以上です。

yu-akun
質問者

お礼

できました!! クリック時、 DefaultValue に設定してみました。 IDはテキスト型ですが、ハイフン(-)を含む数字で入力していたので、ハイフンをマイナスと認識されて勝手に計算され、新規レコードに変な数字がでました。 何の数字か分からずいっとき悩みましたが、="Forms!メインフォーム!ID"とダブルクォーテーションで囲むことで解決しました。 プロパティのデータタブの規定値に =Forms![メインフォーム]![ID] を設定する方でもできました。 (何故か Me!ID にすると Name? が出てダメでした。) "規定値"にすれば良かったんですね。 本当に助かりました!勉強になります。 ありがとうございました!

関連するQ&A

  • MS ACCESSで分割フォーム

    こんにちは。 ACCESSの分割フォームの表示について教えて頂きたいことがあります。 現在サブフォームのあるフォームを分割フォームで表示しています。 そして、メインフォームの[合計金額]というフィールドにサブフォームの[金額]フィールドの合計を参照させて表示しています。 分割されたデータシートの方には[合計金額]というフィールドがちゃんと載ってきます。 ただ、ここで問題が。。。 フォームを開いたとき、データシートの方の[合計金額]が、全レコード同じ値に表示されてしまいます。 一番最初のレコードの[合計金額]の値が全レコードの[合計金額]のフィールドにもずら~っと並んで入っているという感じです。 レコードを選択してみると時間差で値が正しいものに変わります。 でも、選択しないとずっと変わりません。 データがおかしいことになったかと思ってちょっと気持ち悪いので、直す方法があったら知りたいです。 お願いします!!

  • ACCESS 入力順序について

    データシート形式の入力フォーム(サブフォーム)で、フィールド(縦)に移動するよう入力を変えられないのでしょうか? Enter入力時にレコード(横)に動いてしまうのがどうも入力しずらいです。 入力するフィールドのみ表示してほかのフィールドを非表示にするか、 フィールドごとにサブフォームをつくるしかないのですかね。

  • サブフォームに同一の納品日を自動的に入力したい

    XP&ACCESS2003: メインフォーム/サブフォーム形式のフォームで、受注番号で連結しています。 メインフォームが受注、サブフォームが受注明細です。(1対多) メインフォームには「次のレコード」に進むボタンをつけ、クリックにより次のレコードが表示されます。(従って、サブフォームも次の受注の明細に移動します) 複数のレコードを持つサブフォームの納品日(受注明細の納品日フィールドに連結)の最初の一件に日付を入力し、メインフォームの「次のレコード」に進むボタンをクリックした時、1件前の受注明細の納品日を入力していない他の(2件目以降)のレコードにも同一の納品日を自動的に入力できる方法がわかりません。よろしくお願いします。

  • Access:サブフォームにクエリ表示⇒フィールドを絞り込みたい

    Access2003 WinXP です。 フォームにサブフォームを置き、サブフォームのソースオブジェクトにクエリを参照しているデータシート形式のフォームを設定しています。 フォームに絞込み条件を選択するオプションボタン、表示するフィールドを選択するオプションボタンを配置し、 サブフォームへ表示するコマンドボタンを置いています。 この設定を選択した後コマンドボタンを押すと、クエリの中身を書き換えています。 で、実行すると、表示しない設定のフィールドには「Name?」という値が入ったフィールドがしっかり表示されてしまいます。 ソースオブジェクトにクエリ自体を設定すれば回避出来ますが、表示されたデータをダブルクリックするとその1レコードを表示する画面を更に開きたいと思っていますので、サブフォームにデータシート形式のフォームをセットするのがダブルクリックイベントを取得出来て良いかと思っています。 分かりにくい説明ですみません。 何か解決法を分かる方いらっしゃいましたら、お願いします。

  • Accessのサブフォームについて

    メインフォームとサブフォームのあるフォームを作成しました。メインフォームを入力してから、サブフォームを入力し、次のレコードへ移動するのにメインフォームの移動ボタンを押すと、次のレコードのカーソルがサブフォームのフィールドへ移動します。メインフォームに移動する方法はありませんか?

  • Accessのサブフォームのフィールドをチェックボックスにより表示/非表示に切り替える方法

    無謀なことかもしれませんが・・・ 下記のようなフォームを作成したいと思い質問させていただきます。 OS:WindowsXP 使用ソフト:Access2003 ・非連結のサブフォームにクエリを表示させています。 ・メインフォームにはクエリのフィールド名が書かれたチェックボックスを並べて配置しています。 ・チェックボックスをオフにしてコマンドボタンをクリックすると、 サブフォームのクエリのフィールドが非表示になり、またチェックボックスをオンにするとサブフォーム内のクエリのフィールドが表示されるようにしたいです。 初心者なので、丁寧に教えてもらえるととても助かります。 どなたかお知恵をお貸しください★

  • アクセス2003のサブフォームの値の代入

    アクセス2003でメインフォームにデータシートビューのサブフォームを作成しています。 そのサブフォームのフィールドにイベントで検索用の別のフォームを開くようにしています。 検索用フォームからサブフォームへマクロで値を代入するように しているのですが、サブフォームが見つからないというエラーが表示されます。 どこに問題があるのでしょうか? (ちなみにサブフォームだけ開いて検索フォームを開き値を代入するとうまく行きます。メインフォームからだとエラーになります。) どうぞよろしくお願いします。

  • Accessのメインフォームとサブフォームの使い方について

    Accessにてメインフォーム(単票形式)+サブフォーム(帳票形式)を使って進捗管理をするデータベースを作っており、新規にメインフォームで入力し、サブフォームで入力したデータを表示させてます。 サブフォームで更新したいレコードをクリックしたときにメインフォームでそのレコードを表示させるにはどのようにすればよろしいのでしょうか?

  • ACCESS サブフォームのフィールドにカーソルをあてる

    ACCESS2003で、VBAで簡単なプログラムを作っています。 <やっていること> ・フォームAからフォームBを開きます。 ・そのときにフォームAの番号と一致するデータをフォームBに表示します。 ・フォームBにはサブフォームCが埋め込んでいます。 このサブフォームCの中のフィールドDにカーソルが入っているようにしたいのですが、 Forms!サブフォームC!フィールドD.setfocus としたら、「カレントレコードには、フィールドDという名前のフィールドはありません」というエラーがでます。 フィールドDというフィールドは存在しています。 このような場合、どのように記述するのがよろしいのでしょうか。 よろしくお願いします。

  • Access 連結テキストボックスのフィルタ操作を非連結テキストボック

    Access 連結テキストボックスのフィルタ操作を非連結テキストボックスから操作 したいのですが、うまく出来ません。 使用しているのはAccess2007です。 フォームはウィザード使用によるメインフォームとサブフォームです。 構造は下記の通りになります。 ======================================== -メインフォーム-  ID □□□□←(連結テキストボックス、テーブル[IDコード](IDコード(オートナンバー)、名前(テキスト))     ↑ (フィルタ操作を(指定の値に等しい)で非連結テキストボックスの数値を反映させたい。)                   非連結テキストボックス□□□□                      (数値記入してエンターを押すとフィルタ操作実行) ---------------------------------------------------------------------- -サブフォーム-  [ 名前 ]←メインフォームの連結テキストボックスと連動する。 [___][____][____]  [___][____][____] =========================================      使用目的:メインフォームでID検索し、サブフォームで新規登録。 ネットや本をあさっていろいろ試してみたのですが、 非連結テキストボックスの数値がそのまま連結テキストボックス(IDフィールド)に反映されません。 違った数値がでたりしてどうにもなりませんでした。 どうすれば実現可能なのかとても知りたいです。 どうかよろしくお願いします。

専門家に質問してみよう