Page 588 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼A、BのフォームをCのフォームに表示さ... よっしー 04/3/29(月) 17:56 ┗Re:A、BのフォームをCのフォームに表示さ... クロ 04/3/30(火) 18:22 ┗Re:A、BのフォームをCのフォームに表示... よっしー 04/4/5(月) 10:46 ─────────────────────────────────────── ■題名 : A、BのフォームをCのフォームに表示さ... ■名前 : よっしー ■日付 : 04/3/29(月) 17:56 -------------------------------------------------------------------------
こんにちは。よっしーです。 (Aのフォームにはコマンドボタンが 「追加」「編集」「複製」があります) Aのフォームに 生徒ID 氏名 学年 クラス 出席番号 ---- ---- ---- ---- ---- となっており、コマンドボタン「詳細」 を押下するとBのフォームが開きます。 Bのフォームに 生徒ID 氏名 電話番号 携帯番号 住所 ---- ---- ---- ---- ---- となっています。AもBもテーブルから データをひっぱています。 Cのフォームはコマンドボタン「追加」 「編集」「複製」を押下すると開きます。 「追加」を押下すると単純にCのフォームを 開きます。 生徒ID 氏名 学年 クラス 出席番号 ---- ---- ---- ---- ---- 電話番号 携帯番号 住所 ---- ---- ---- Aのフォームで何れかのレコードを選択して 「編集」を押下するとCのフォームに例えば 青木君のAとBのフォームに表示されていた データが表示されるようにしたいのです。 Cのフォームは非連結のテキストボックスで つくってあります。 どのようにしてAとB(のフォームが引っ張 ってきてる)のそれぞれのテーブルからCの フォームに表示させる事ができるのでしょうか? どなたか分かるからご教授お願いいたします。 |
こんにちは、チョット長いけど... Aフォームのヘッダーに不可視のテキストボックス(名前をtxt生徒ID_Selectとします)を 配置してください。 ※通常のテキストボックスでプロパティで「可視」を「いいえ」にしてください。 前回の投稿の件もこれで対応できそうなので後述します。 Aフォームの各フィールド(生徒ID・氏名・学年・クラス・出席番号)のクリック時の イベントに Me.txt生徒ID_Select = Me.生徒ID を記述してください これで各フィールドをクリックしたときにヘッダーの不可視テキストボックス 「txt生徒ID_Select」に当該レコードの生徒IDが値が代入されます。 DAOを使用しますので「参照設定」でMicrosoft DAO 3.* Object Library にチェックを 入れてください。 Aフォームの「編集」コマンドボタンのクリック時のイベントに If Len(Nz(Me.txt生徒ID_Select, "")) = 0 Then MsgBox "このレコードには生徒IDが未設定です。" & vbCrLf & _ "Cフォームを開くことは出来ません。", vbCritical, "警告" Else DoCmd.OpenForm "Cフォーム", acNormal End If として Cフォームの開くときのイベントに Dim dbs As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Set dbs = CurrentDb strSQL = "SELECT Aテーブル.生徒ID, Aテーブル.氏名, Aテーブル.学年, Aテーブル.クラス, Aテーブル.出席番号," & _ " Bテーブル.携帯番号, Bテーブル.電話番号, Bテーブル.住所" & _ " FROM Aテーブル INNER JOIN Bテーブル ON Aテーブル.生徒ID = Bテーブル.生徒ID" & _ " WHERE Aテーブル.生徒ID = '" & Forms!Aテーブル.txt生徒ID_Select & "'" Set rs = dbs.OpenRecordset(strSQL, dbOpenDynaset) Me.生徒ID = rs![生徒ID] Me.氏名 = rs![氏名] Me.学年 = rs![学年] Me.クラス = rs![クラス] Me.出席番号 = rs![出席番号] Me.携帯番号 = rs![携帯番号] Me.電話番号 = rs![電話番号] Me.住所 = rs![住所] これでいけると思います。 ※前回投稿の解決案 前述の不可視のテキストボックス「txt生徒ID_Select」を使い Aフォームの「詳細」ボタンに If Len(Nz(Me.txt生徒ID_Select, "")) = 0 Then MsgBox "このレコードには生徒IDが未設定です。" & vbCrLf & _ "Bフォームを開くことは出来ません。", vbCritical, "警告" Else DoCmd.OpenForm "Bフォーム", acNormal, , , , , Me.txt生徒ID_Select End If として Bフォームを開くときのイベントに Me.生徒ID.SetFocus DoCmd.FindRecord OpenArgs, acEntire, , acDown, , acCurrent とすれば、希望のことが出来るかと思います。 |
クロさん、大変遅くなってすいませんでした。 できました。 ありがとうございます。 今後ともよろしくおねがいします。 |