ACCESS フォームでサブフォームのデータを更新・入力する方法

このQ&Aのポイント
  • ACCESS のフォームからサブフォームのデータを更新・入力する方法について説明します。tbl_プロジェクトというテーブルにはID、プロジェクトコード、プロジェクトの基本情報が保存されており、f_プロジェクトフォームではプロジェクトコード、件名、契約日などのデータを入力できます。また、f_テーマサブフォームではテーマを入力できます。フォームで入力したデータはそれぞれのテーブルに保存されます。しかし、tbl_プロジェクトとtbl_テーマのデータを関連付ける方法については分かりません。どのようにすれば良いでしょうか?詳細を教えてください。
  • ACCESS のフォームを使用して、サブフォームのデータを更新・入力する方法が分からない問題が発生しています。現在、tbl_プロジェクトというテーブルにはID、プロジェクトコード、プロジェクトの基本情報が保存されており、f_プロジェクトフォームではプロジェクトコード、件名、契約日などのデータを入力できます。また、f_テーマサブフォームではテーマを入力できるようになっています。ただし、フォームで入力したデータをtbl_プロジェクトとtbl_テーマのデータと関連付ける方法が不明です。どのようにすれば良いでしょうか?詳しい手順を教えてください。
  • ACCESS のフォームを使用して、サブフォームのデータを更新・入力する方法についてお知りになりたいようです。tbl_プロジェクトというテーブルにはID、プロジェクトコード、プロジェクトの基本情報が保存され、f_プロジェクトフォームではプロジェクトコード、件名、契約日などのデータを入力できます。また、f_テーマサブフォームではテーマを入力できるようになっていますが、フォームで入力したデータをtbl_プロジェクトとtbl_テーマのデータに関連付ける方法が分からないようです。ご教示いただければ幸いです。
回答を見る
  • ベストアンサー

ACCESS フォームからサブフォームのデータを更新・入力したい

ACCESS フォームからサブフォームのデータを更新・入力したい tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。 フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェクトに所属するプロジェクトコードをサブフォームのtbl_テーマのプロジェクトコードにも反映したいのですがどのようにしたらよいでしょうか? そういったことは可能でしょうか?分かりにくい説明で申し訳ないですが教えていただけると助かります。よろしくお願いします! DBの構成 【テーブル】 tbl_プロジェクト (1件1件のIDとプロジェクトコードを持つ) (フィールド:P_ID、プロジェクトコード、件名、契約日など) tbl_テーマ(プロジェクト毎に関連のあるキーワードを持つ) (フィールド:P_ID、プロジェクトコード、テーマ)←これのプロジェクトコードにtbl_プロジェクトのデータが入るようにしたい。 tbl_顧客(プロジェクトを依頼した顧客情報を持つ) 【クエリ】 q_テーマ(プロジェクト、テーマ、顧客を抽出するクエリ) 【フォーム】 f_プロジェクト (プロジェクトを1件ずつ表示・参照・新規作成するフォーム) f_テーマサブフォーム (f_プロジェクトフォームのプロジェクトコードにづきテーマを          表示・入力するサブフォーム) リレーションはP_IDをキーに一対多で作成しています。

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

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

No.4です。 前回の回答は、「レコードの新規登録」のみを想定していました(汗) 大変失礼致しました。 【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】 (=No.4の補足での、2個目の「◆」の件) メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の 更新後イベントと同様の処理を行えば、解消すると思います。 (先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く  同じなので、今回は省略します) 【既存レコードでの『プロジェクトコード』の空白について】 (=No.4の補足での、1個目の「◆」の件) 対処法としては、  a)更新クエリを使用して、tbl_テーマの『プロジェクトコード』を一括更新   (→tbl_テーマに入力済みの『P_ID』の再確認が不要な場合)  b)「メインフォーム上のプロジェクトコードを、サブフォームの全レコードに   一括代入」するためのコマンドボタンを、メインフォームに追加   (→tbl_テーマの『P_ID』が正しいかを目視確認してから代入する場合) の、2つの考え方があります。 「a」については添付画像をご覧いただくとして、ここでは「b」について説明 します。 メインフォームに『コード転記』コマンドボタンを作成したら、そのクリック時 イベントに以下のコードを記載して下さい: Private Sub コード転記_Click()   If MsgBox("サブフォームにプロジェクトコードを追記します", vbOKCancel, "確認") = vbCancel Then Exit Sub   'サブフォームの全レコードを上書き更新   With Me![サブフォームのコントロール名].Form.RecordsetClone     Do Until .EOF       .Edit       !プロジェクトコード = Me!プロジェクトコード       .Update     Loop   End With   '更新を反映   Me![サブフォームのコントロール名].Form.Refresh   MsgBox "追記しました", , "確認" End Sub なお、「a/b」のどちらを採った場合でも、サブフォームの『P_ID』の上書き 編集に合わせて『プロジェクトコード』も連動して更新させるには、別途、 以下のような『P_ID』の更新後イベントでの対応が必要です: Private Sub P_ID_AfterUpdate() 'メインではなくサブフォームの『P_ID』テキストボックスの更新後イベント   If IsNull(Me!P_ID) Then     Me!プロジェクトコード = Null   Else     Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]=" & Me!P_ID)     '『P_ID』がテキスト型の場合は上記ではなく以下のコード     'Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]='" & Me!P_ID & "'")   End If End Sub また、この対応を組み込んで戴けば、 > テーマを修正するとフォーム上では10001が入力される。 > tbl_テーマには反映されない。 の件も解消すると思います。 (但し、別のレコードに移動したり、メニューから「レコード(R)→レコードの  保存(O)」を選択する等して、レコードが保存してからでないと、テーブル  には反映されないので、確認の際はご注意下さい) ・・・以上です。

orcami
質問者

お礼

ご報告が遅くなり、申し訳ありません。 新規作成の場合、tbl_テーマにプロジェクトコードを登録することが出来ました。 既存レコードのプロジェクトコードの更新がまだうまくいきませんが、なんとか 試してみます。 また、今後はもう少し勉強して、テーブル作成時にきちんと正規化することを 心がけたいと思います。 本当に親切に詳しくご説明いただき、ありがとうございました。また質問させて いただくと思いますがよろしくお願いいたします。

その他の回答 (5)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.5

以下でどうなりますか。 パターン0)(現状? リンク親/子フィールドが P_ID) 「f_テーマサブフォーム」の挿入前処理で、「プロジェクトコード」を親から持ってきます。 Private Sub Form_BeforeInsert(Cancel As Integer)   If (IsNull(Me.Parent.プロジェクトコード)) Then     Cancel = True   Else     Me.プロジェクトコード = Me.Parent.プロジェクトコード   End If End Sub If の判別は、 IsNull(Me.Parent.P_ID) Or IsNull(Me.Parent.プロジェクトコード) でも。 親が設定されていなければ編集状態にしない判別をしているだけです。 挿入前処理なので、新規への設定になります。 パターン1) f_プロジェクトのレコードソースが、tbl_プロジェクト f_テーマサブフォームのレコードソースが、tbl_テーマ だった場合、 リンク親フィールド、リンク子フィールドともに、 P_ID;プロジェクトコード 親が空欄なら編集状態にさせないようにするには、子側で Private Sub Form_BeforeInsert(Cancel As Integer)   If (IsNull(Me.Parent.P_ID) Or IsNull(Me.Parent.プロジェクトコード)) Then     Cancel = True   End If End Sub パターン2) f_プロジェクトのレコードソースが、tbl_プロジェクト f_テーマサブフォームのレコードソースは、tbl_テーマをベースに 抽出条件で P_ID = [Forms]![f_プロジェクト]![P_ID] と親フォームを参照 だった場合、(リンク親/子フィールドが空欄だった場合) パターン0と同様に Private Sub Form_BeforeInsert(Cancel As Integer)   If (IsNull(Me.Parent.P_ID) Or IsNull(Me.Parent.プロジェクトコード)) Then     Cancel = True   Else     Me.P_ID = Me.Parent.P_ID     Me.プロジェクトコード = Me.Parent.プロジェクトコード   End If End Sub サブフォームの再クエリは、必要なタイミングで行います。 パターン3)(パターン0,2と複合して) 既に何件か関連付けられたデータがあって、メインのプロジェクトコードを変更した時に サブ側のプロジェクトコードも変更したい。 っていう場合? メイン側の更新前処理でプロジェクトコードに変更があったか判別し、更新後処理で変更 Dim bChg As Boolean Private Sub Form_BeforeUpdate(Cancel As Integer)   bChg = False   If (Not Me.NewRecord) Then     If (Nz(Me.プロジェクトコード) <> Nz(Me.プロジェクトコード.OldValue)) Then       bChg = True     End If   End If End Sub Private Sub Form_AfterUpdate()   Dim sSql As String   If (bChg) Then     sSql = "UPDATE tbl_テーマ SET プロジェクトコード = "     sSql = sSql & IIf(IsNull(Me.プロジェクトコード), "Null", Me.プロジェクトコード)     sSql = sSql & " WHERE P_ID = " & Me.P_ID & ";"     CurrentDb.Execute sSql   End If End Sub ※プロジェクトコードは数値型とした時のものになります。 ※現在tbl_テーマ内のプロジェクトコードが完全じゃない場合、以下クエリで設定します。 UPDATE tbl_テーマ INNER JOIN tbl_プロジェクト ON tbl_テーマ.P_ID = tbl_プロジェクト.P_ID SET tbl_テーマ.プロジェクトコード = tbl_プロジェクト.プロジェクトコード; 試される時には戻せる状態にしてから・・・

orcami
質問者

お礼

ご回答ありがとうございます! バックアップを取ってから確認させていただきます。

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

※長文ですが、P_IDとプロジェクトコードが一対一でない場合は、後半  は無視して下さい(汗) 【ご質問の内容通りの動作を行わせる方法】 リレーションシップが設定されている『P_ID』と(ほぼ)同様の動作を 『プロジェクトコード』に行わせるには、メイン側の『プロジェクトコード』 の更新後イベントで、サブ側に既定値を設定します。 <VBAの場合> Private Sub プロジェクトコード_AfterUpdate()   Dim DefVal As String   '入力値を確認   If IsNull(プロジェクトコード) Then     '値を削除したときは既定値を解除     DefVal = ""   Else     '値を設定したときは既定値を設定     '(数値型/文字列型の双方に対応するため「"」(=Chr(34))で     ' 括りましたが、数値型の場合はなくてもOK)     DefVal = Chr(34) & プロジェクトコード & Chr(34)   End If   '上で変数に記録した値を、既定値プロパティに設定   Me![サブフォームのコントロール名]!プロジェクトコード.DefaultValue = DefVal End Sub <マクロの場合> メイン側の『プロジェクトコード』の更新後イベントに以下のマクロを設定: アクション: 値の代入 アイテム: Forms![メインフォーム名]![サブフォームのコントロール名]!プロジェクトコード.DefaultValue  式: IIF(IsNull(Forms![メインフォーム名]!プロジェクトコード), "", Chr(34) & Forms![メインフォーム名]!プロジェクトコード & Chr(34))  ※アイテム・式の一部に、自動で角括弧が追加されます。 【データベースで推奨される方法】 提示サンプルを見ると、『P_ID』と『プロジェクトコード』は一対一の 関係にあるようですが、この場合、『プロジェクトコード』は『P_ID』 からの演算で表示可能なので、サブ側には『P_ID』のみを記録 するのが一般的です。 (サブ側での入力は不要(というか『プロジェクトコード』はなくなる  ので、不可能)になります) 具体的には  a)【検索×・編集×】フォームで演算コントロールを追加  b)【検索○・編集×】クエリで演算フィールドを追加  c)【検索○・編集○(P_IDと連動)】フォーム又はクエリで、『P_ID』   から『プロジェクトコード』を表示させるコンボボックスを追加 等です。 以下、それぞれの概要です: a)『f_テーマサブフォーム』のデザインビューで、ツールバーから  テキストボックスを新たに追加するか、既にある『プロジェクト  コード』テキストボックスを選択したら、プロパティシートの  『データ』タブの『コントロールソース』に以下のような式を指定  します(先頭に「=」が必要):   =DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]=" & [P_ID]) b)『tbl_テーマ』を元とするクエリのデザインビューで、『フィールド:』  欄に以下のような式を指定します(『テーブル:』欄は空白):   プロジェクトコード: DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]=" & [tbl_テーマ].[P_ID])   ※前半(「:」の左側)は、演算結果を表示させる際の名前になります。    (特に指定しない場合、「式1」などが自動で入力されます) c)以下、クエリでの例:  1)『tbl_テーマ』を元とするクエリをデザインビューで開く  2)『P_ID』のデータの表示が不要なら1個、表示が必要なら2個、   『P_ID』を表示対象として追加  3)『フィールド:』欄の「P_ID」の1つを、「プロジェクトコード: P_ID」に   変更  4)右クリックメニューなどからこのフィールドのプロパティシートを   開き、『ルックアップ』タブを選択  5)『表示コントロール』に「コンボ ボックス」を指定  6)表示項目が増えるので、以下のように設定:  ・値集合タイプ: テーブル/クエリ  ・値集合ソース: Select Distinct プロジェクトコード, P_ID From tbl_プロジェクト Order by プロジェクトコード;  ・連結列: 2  ・列数: 2  ・列幅: 5cm;0cm ・・・以上です。 長文、失礼致しました(汗)

orcami
質問者

補足

なかなか試すことが出来ず、お礼と報告が遅くなりすみませんでした。 ご指摘いただいたとおり、テーブルを正しい構成にしてCの案を試そうと思っていますが、 取り急ぎ、VBAだけで対処できればと思って試行錯誤しています。 ご回答いただいたVBAを試したところ、サブフォームのプロジェクトコードに関わらず、 メインフォームに入力したプロジェクトコードが表示されてしまいます。そしてやはり テーブルには反映できません。やはりテーブルを修正しないと思う動作はしないでしょうか?? ◆メインに10001と入力すると何も入っていないサブフォームのフィールドには反映される。 また、テーマを修正するとフォーム上では10001が入力される。tbl_テーマには反映されない。 メインフォーム | [P_ID] [プロジェクトコード] [プロジェクト名] | 1        10001        新型テレビ |_______________________________________________ |サブフォーム |[テーマ] [p_ID] [プロジェクトコード] |[テーマ1]   1            |[テーマ2]   1               |何も入っていないレコード         10001 ________________________________________________ ◆メインに10001と入力してから他のプロジェクトコードに移動すると既に入力されている既存のコードは 表示されているが、何も入っていないレコードには10001と表示されている。テーマを修正すると10001が 表示される。 ※プロジェクトコードが既存で入っているのは初期データはエクセルに入力後に読み込んだからです。 メインフォーム | [P_ID] [プロジェクトコード] [プロジェクト名] | 1        20001        エアコン |_______________________________________________ |サブフォーム |[テーマ] [p_ID] [プロジェクトコード] |[テーマ1]   1              20001            |[テーマ2]   1              20001            |何も入っていないレコード         10001 ________________________________________________

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

別途更新後項目をメインに用意しサブの更新クエリ、再クエリを実行させたら出来るのではないかと思いますがまだ検証はしてません。この手の仕掛けはフォーム閉じた際メインサブ同時更新してくれない仕様だった認識です。ネットで、同時更新のボタン作りたいとかいう情報がグーグルでありましたが、今回のにあてはまるかはなんとも。 参考意見ですみません。

orcami
質問者

お礼

お礼が遅くなりましたが、ありがとうございます。 まだうまく動作しないので記載いただいた方法も試させていただきます。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

すみません。前回回答は無視して下さい。ほかの用途と混同してました。対応になってません。 メインのフォームで入力した内容はメインのレコードソースに更新されるが、同時にサブフォームのレコードソースへも反映させたいようなことでしょうか?。

orcami
質問者

補足

はい。そういうことです。メインフォームの中に開かれているサブフォームのプロジェクトコードに 自動的に反映したいのです。 テーブルのリレーションで繋がっているP_IDはメイン、サブともにテーブルに自動的に反映されるのですが、 プロジェクトコードはどうしても反映されません。P_IDは主キーに設定しています。 フォームのイメージとしては↓のような形です。宜しくお願いいたします。 |メインフォーム | [P_ID] [プロジェクトコード] [プロジェクト名] | 1        10001        新型テレビ |_______________________________________________ |サブフォーム |[テーマ] [p_ID] [プロジェクトコード] |[テーマ1]   1           10001 |[テーマ2]   1           10001 |[テーマ3]   1           10001 ________________________________________________

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

「f_プロジェクトフォームからプロジェクトコードを入力したとき、」 に tbl_テーマのプロジェクトコードに【値の代入】をし、その後で再クエリ、かと思われます。

orcami
質問者

補足

tbl_テーマのプロジェクトコードに【値の代入】とは、f_テーマサブフォームのプロジェクトコード部分に 設定するということでよいのでしょうか? テーブルのフィールドに【値の代入】を設定する方法があるのでしょうか?わかっていなくてすみません~~。 また、【値の代入】、再クエリを設定するのはどのイベントが適切なのでしょうか?色々と試していますが なかなかうまくいきません。宜しくお願いします。

関連するQ&A

  • ACCESS のサブフォーム表示について

    ACCESS のサブフォーム表示について 環境 ACCESS2003 テーブルが2つあります 1、 TBL顧客情報 2、 TBL購入品 TBL顧客情報をメインにTBL購入品をサブフォーム にして受注フォームを作りたいと思います 以下3つのことを望んでいます 1、サブフォームに購入品を加えてたいのですが 追加できる行を3行までと制限を掛けたい。 2、受注フォームを開いたときサブフォームには 空の3行が表示されている 3、ですのでTBL購入品には記入した購入品がのみが 追加され、空の行は無視される。 どなたかお知恵を拝借させてください。

  • アクセスのフォームによるデータ入力について

    顧客の販売履歴管理で サブフォーム上に抽出した顧客データをクリックして 入力用のフォームが立ち上がりデフォルト値として抽出した顧客のデータがすでに入った状態にする方法はどうすればよいでしょうか? 顧客データデーブルと履歴テーブルがあり2間は顧客IDでリレーション関係されています。

  • ACCESS2003 サブフォームのデータ

    こんにちは。宜しくお願い致します。 ACCESS2003でDBを作成しています。 メインフォームの中にサブフォームを作っています。 それぞれのID(オートナンバー)をリレーションシップとして設定し、連動しています。 メインフォームにデータを追加する際、サブフォームにデータを入力せずに、 次のメインフォームにデータを入れた場合、 サブフォームのオートナンバーが働かず、のちのちデータを入れた際にIDが違うため情報がずれてしまいます。 例えば、 メインフォームのID1~9のサブフォームには何も書き込まずメインフォームにだけデータを入力します。 その後、メインフォームのID10にあるサブフォームにデータを書き込むと、立ち上げなおしたときに、そのサブフォームへの入力したデータがID1のデータとして出てきてしまいます。 恐らく簡単なことだとは思うのですが、なにぶん初心者なものでさっぱり分かりません。 お分かりになる方、是非ともご教授お願いいたします。

  • ACCESS2007 サブフォームを別ウィンドで

    ACCESS2007でデータベースを作っています 入力時にフォームを利用していますが、サブフォームを数個入れて使用しています。 今回突発的なイベントがあり、イベントの申込みを管理したいのですが、 フォームがかなり大きくなってしまうので、ボタンを付けてサブフォームを別ウィンドで 開けないか試行錯誤しています。 フォームにボタンをつけ、ウィザードで「フォームを開く」「特定のフォームを開く」「顧客IDでつなぐ」 という設定で作成をしましたが、同フォームの中に入れ込んだサブフォームのように 顧客IDでは結ばれていないものになってしまいました 同フォームであれば、作成したテーブルやクエリをドラッグしてあげれば「顧客ID」で結べるのですが、 これを別ウィンドで立ちあげられるようにするにはどうやればいいでしょうか? ネットで検索してみたのですが、目的のものは見つからなかったので質問させていただきました やり方がわかるかた、または参考ホームページをご存じの方、どうぞよろしくお願いいたします

  • accessのフォームで参照しながら入力

    access初心者です。教えてください。 今、以下のようなテーブルがあるとします。 TBL_A ID,名前,TEL,FAX TBL_B ID,顧客ID,年月日,メモ 新規でTBL_Bのデータを追加するときにリストボックスから顧客を選び、年月日とメモを入力するフォームを作成しています。 このときにリストボックスより選択後、年月日とメモを入力するテキストボックス等の横に該当顧客の直近(TBL_Bの該当顧客の年月日が最新のもの)のデータを表示したいです。 要するに前回のデータを見ながら入力したいです。 表示はテキストボックスでもラベルでもかまいません。 実際には項目数は20個程度あります。 VBAでもかまいません。どのような方法があるでしょうか? 教えて頂きたいです。

  • Accessでのフォーム入力エラー

    顧客管理を 顧客マスタ 受注明細 入金明細のテーブルを作成し、リレーションシップの設定をしてあります。テーブルには、この形で入力できるのですが、フォームをウィザードを使って作成(サブフォームのリンクされたフォーム)しました。 新規入力することができません。「テーブル’顧客マスタ’にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更をおこなうことはできません。」のメッセージが出ます。 どうしていいのか、わかりません。教えてください。

  • ACCESS フォームにデータ入力できません

    まず支払一覧と発注一覧のテーブルを作成後、そのフォームを作成し、そこからデータを入力できるようにと考えていたのですが、入力しようとしても上書きできません。各一覧には、既にリレーションシップおよび内訳金額と摘要が書けるサブフォームと、それらの合計金額のサブフォームが付けてあります。何をどうすれば、フォーム上にデータを上書きすることができるでしょうか。簡単なことで申し訳ございませんが、どなたか教えてください。。宜しくお願いします。

  • アクセスでフォームとサブフォームのリンクについて

    アクセスを勉強初めて10日経過したシロウトものです。 今顧客管理データベースを作成しています。いろいろ学んで来ましたが、従業員のメンテフォーム作成でつまずいています。 社員No 配属 従業員名 のデーブルからフォーム、サブフォームを作成しました。フォームで入力し、サブフォームで従業員の一覧ができるようにしたいのです。ウィザード通りに作成するとサブフォームではフォームにある社員Noの行しか現れません。何かの見本では、ズラーと社員一覧になっており、サブフォームのどこかをクリックすると上のフォームの画面がサブフォームと連動して切り替わります。この仕組みがどうなっているのか、どうか教えて下さい。よろしくお願いします。

  • access検索フォームからメイン、サブフォームへ

    access初心者です。 先日、「メイン、サブフォームの入力」について質問した者です。 取引先の会社情報を管理するために、access2007で顧客管理を作成しています。 現在、取引先本社情報とその支店情報を新規登録及び既存顧客を編集するフォーム「会社登録フォーム」と「会社検索フォーム」を主にVBAで作成しています。 <実現したいこと>: 既存顧客を編集する場合は「会社検索フォーム」から抽出し、「選択」ボタンで会社情報を「会社登録フォーム」に呼び出し、本社及びその支店情報を編集する。 <困っていること>: 「会社検索フォーム」から顧客を選択後、「会社登録フォーム」では、支店情報は変わりますが、本社情報が変わりません。 (メッセージ:「リレーションシップが設定されたレコードがテーブル'支店テーブル'にあるので、 レコードの削除や変更を行うことはできません。」というメッセージがでます。) <会社登録フォームの環境>: 会社の本社情報をメインフォーム、その会社の支店情報をサブフォームに、単票形式のタブコントロールで複数画面にして、支店ごとに分けて入力できる登録フォームを作成しています。 本社テーブルの会社IDを主キーに、支店テーブルの支店IDを主キーにしてリレーションシップを設定し、クエリ「Q_本社支店」というテーブルを作成しています。 <会社検索フォームの環境>: ・「Q_本社支店」テーブルを元に「会社検索フォーム」を作成しています。 ・「会社名」「支店名」等で検索し、データシートで表示します。 ・ 抽出されたレコードの「選択」ボタンで、「会社ID」を「会社登録フォーム」の本社情報の「会社ID」に代入します。 色々調べてやってはみたのですが、上手くいきません。 行き詰まり感があり、困っております。 ご教授のほどよろしくお願いいたします。

  • accessのサブフォームの更新

    いつもお世話になっています。 サブフォームの件でどうしても解らないところがあります。 受講者名簿テーブル 受講者番号、受講者名、受講者住所・・・ 受講者予約テーブル 受講者番号、日付、授業内容 上記の2つのテーブルでそれぞれフォームを作成していて、メインが「受講者名簿F」サブが「受講者予約F(表形式)」、受講者番号でリレーションをしています。 受講者予約テーブルをもとに、日付で検索できるように「受講者日付検索Q」というクエリを作成しました。 「受講者名簿F」のメインテーブルに「日付検索」というのを作成して、「受講者日付検索Q」をもとにしたフォームを開くようにしています。 今回、行いたいことは「日付検索」ボタンの隣に「更新」というボタンを作成し、「日付検索」で表示されたフォームにデータ変更をした際、画面を閉じた後で サブフォーム「受講者予約F(表形式)」の画面に変更が反映されるようにしたいのですが、やり方が思いつきません。 よろしくお願い致します。

専門家に質問してみよう