• 締切済み

サブフォーム用のテーブルのデータで検索をしてマスタフォームに表示したい。

Access2000での質問です。 T_マスタ(氏名ID・氏名)・T_サブ(氏名ID・データ年・データ種類)というテーブルから F_マスタ・F_サブというフォームを作成し、 F_マスタの中にサブフォームとしてF_サブを入れています。(氏名IDでリンク) F_検索というフォームを作成し、 データ年・データ種類で検索するようにしました。 この結果を、F_マスタで表示したいのですが、 F_マスタはT_マスタから作成されているため、検索結果が 希望するものではなくなってしまいます。 F_サブでみればきちんと検索されているのですが、 それでは氏名がみれないので。。。 このようなことはできるのでしょうか? F_検索の検索ボタンのコードです。 ------- Private Sub コマンド1_Click() Dim SQL As String Dim WhereCond As String Dim condNendo As String Dim condSyurui As String 'データ年 If Me!データ年.Value <> "" Then condNendo = "(T_サブ.データ年 like '*" & Me!データ年.Value & "*')" WhereCond = WhereCond & " AND " & condNendo End If '種類 If Me!データ種類.Value <> "" Then condSyurui = "(T_サブ.データ種類 like '*" & Me!データ種類.Value & "*')" WhereCond = WhereCond & " AND " & condSyurui End If WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "F_サブ", acNormal, , WhereCond End Sub ------- *上記の「F_サブ」を[F_マスタ」で開くようにしたいのです。 宜しくお願いします。

みんなの回答

  • nanashan
  • ベストアンサー率37% (11/29)
回答No.3

サブのデータから、それに紐づいたデータがメインの方に反映したいということですよね?検索結果が表示されるような関数をかかれるといいのではないでしょうか?大変姑息な手段を実は、言っているのです。ごめんなさいね。わかりにくくて。

KODAMAR
質問者

お礼

3度の回答ありがとうございます。 なんとなくおっしゃってることが理解できてきました。 ですが!実際にそのコードを組むことができません!(T_T) 開くフォームはF_サブの方でいいのですよね? 具体的なコードがおわかりになれば教えていただきたいのですが・・・。 頼りっぱなしで申し訳ございませんが、よろしくお願いします。

  • nanashan
  • ベストアンサー率37% (11/29)
回答No.2

これは、親フォーム(T_マスタ)の中の何かの関数名をかくということでしょうか? そういうことです。ごめんなさい。分かりにくい説明で。

KODAMAR
質問者

お礼

2度目に回答ありがとうございます。 >>これは、親フォーム(T_マスタ)の中の何かの関数名をかくということでしょうか? >そういうことです。 この関数というのは何をかけばいいのでしょうか? >ごめんなさい。分かりにくい説明で。 いえいえ、読解力なくてすいません。

  • nanashan
  • ベストアンサー率37% (11/29)
回答No.1

動作確認のしようがなくて、書かせていただきますね。 F_サブで、Openイベントなどで下記のようなコードを書いて下さい。 Me.Parent.関数名 関数名には、もちろん親フォームの中に作成してみてくださいね。

KODAMAR
質問者

お礼

回答ありがとうございます。 >関数名には、もちろん親フォームの中に作成してみてくださいね。 これは、親フォーム(T_マスタ)の中の何かの関数名をかくということでしょうか? 申し訳ございませんが、もう一度教えていただけますでしょうか? 宜しくお願いします。

関連するQ&A

  • 検索フォームで検索するものが決まっているときのかきかた。

    Ac2000です。 T_マスタというテーブルに 名前や所属の課、年度などが入っています。 このTマスタから検索する検索フォームがあります。 検索ボタンがいくつかあり、 年度を検索するようにテキストボックスがあります。 年度テキストボックスにいれた年度で検索しつつ、 押した検索ボタンによって検索する方法はどのようにしたらよいでしょうか? Ex.検索ボタンには所属の課などがかいてあり、「総務」「営業」などどかいてあります。 ソースはこんな感じです。 ------------------------------ Dim SQL As String Dim WhereCond As String Dim condNendo As String '年度 If Me!年度.Value <> "" Then condNendo = "(T_マスタテーブル.年度 = " & CLng(Me!年度.Value) & ")" WhereCond = WhereCond & " AND " & condNendo End If WhereCond = Mid(WhereCond, 6) DoCmd.OpenReport "R_マスタ_一覧", acPreview, , WhereCond End Sub

  • Accessの検索フォーム作成で。

    Access2000です。 一覧テーブルは ・名前 ・項目1 ・評価1 ・項目2 ・評価2 となっていて、 山田太朗  | タバコのポイ捨てはしない  | 5 | 10分前行動 | 4 | 前田前   | 交通ルールを守る      | 5 | 挨拶をする  | 4 | 大坪拳   | 10分前行動        | 4 | 挨拶をする  | 5 | のようになっています。 これをもとに「検索フォーム」をデザインフォームで、 名前   [     ] 項目1  [     ] 項目2  [     ] 項目3  [     ] と作成し、「検索」というボタンを押すと、「検索結果フォーム」に検索結果が出るようにしました。 検索ボタンは Private Sub コマンド9_Click() Dim SQL As String Dim WhereCond As String Dim condName As String Dim condKoumoku1 As String Dim condKoumoku2 As String Dim condKoumoku3 As String WhereCond = "" '名前 If Me!名前.Value <> "" Then condName = "(一覧.名前 like '*" & Me!名前.Value & "*')" WhereCond = WhereCond & " and " & condName End If '項目1 If Me!項目1.Value <> "" Then condKoumoku1 = "(一覧.項目1 like '*" & Me!項目1.Value & "*')" WhereCond = WhereCond & " and " & condKoumoku1 End If : WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "検索結果フォーム", acNormal, , WhereCond End Sub となっています。 そこで、検索フォームで 項目に検索値を入れた場合、一覧の項目すべての中から検索できるようにするにはどうしたらいいのでしょうか? また、今の状態ですとand検索ですが、or検索するにはどのようにしたらいいでしょうか?

  • access検索フォームで期間抽出

    普通の文字入力による検索は If Me!氏名.Value <> "" Then condName = "(T_社員マスタ.氏名 like '*" & Me!氏名.Value & "*')" WhereCond = WhereCond & tempOper & condName End If のようにしています。 たとえば2000/10/1~2003/10/1 のように、ある一定の期間を指定してそれに当てはまるものを検索結果として出したい場合は、 上記をどのように変更すればいいのでしょうか?

  • Accessの検索フォーム(CLng)で。

    検索フォームの項目は以下の通りです。 ○ AND  ○ OR 名前  [    ] 項目  [    ]▼  [    ]▼  [    ]▼ もとになってるテーブルは ・名前 ・項目1 ・項目2 ・項目3 ・項目4 ・項目5 というようなっています。 (項目1-5は数値データなのであいまい検索はしたくありません。) 検索ボタンのコードは Select Case Me!検索方法.Value Case 1 'or tempOper = " AND " strCount = 5 Case 2 'and tempOper = " OR " strCount = 4 End Select '名前 If Me!SyainName.Value <> "" Then condName = "(T_マスタ.氏名 like '*" & Me!SyainName.Value & "*')" WhereCond = WhereCond & tempOper & condName End If If Me!項目1.Value <> "" Then condKoumoku1 = "(T_マスタ.項目1 = " & CLng(Me!項目1.Value) & ")" condKoumoku2 = "(T_マスタ.項目2 = " & CLng(Me!項目1.Value) & ")" condKoumoku3 = "(T_マスタ.項目3 = " & CLng(Me!項目1.Value) & ")" tempCond = tempCond & " OR (" & condKoumoku1 & " OR " & condKoumoku2 & " OR " & condKoumoku3 & ")" End If If tempCond <> "" Then tempCond = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果_一覧", acNormal, , WhereCond これを実行すると クエリ式 '((OR OR))' の構文エラー:演算子がありません。 と出ます。 どこを訂正すべきでしょうか? Access2000です。

  • 以下のアクセスの検索フォームで。。。

    検索フォームの項目は以下の通りです。 ○ AND  ○ OR 名前  [    ] 項目  [    ]▼  [    ]▼  [    ]▼ もとになってるテーブルは ・名前 ・項目1 ・項目2 ・項目3 ・項目4 ・項目5 というようなっています。 検索ボタンのコードは Select Case Me!検索方法.Value Case 1 'or tempOper = " AND " strCount = 5 Case 2 'and tempOper = " OR " strCount = 4 End Select '名前 If Me!SyainName.Value <> "" Then condName = "(T_マスタ.氏名 like '*" & Me!SyainName.Value & "*')" WhereCond = WhereCond & tempOper & condName End If '項目 If Me!Koumoku1.Value <> "" Then condKoumoku1 = "(T_マスタ.項目1 like '*" & Me!Koumoku1.Value & "*')" condKoumoku2 = "(T_マスタ.項目2 like '*" & Me!Koumoku1.Value & "*')" condSKoumoku3 = "(T_マスタ.項目3 like '*" & Me!Koumoku1.Value & "*')" tempCond = tempCond & " OR (" & condKoumoku1 & " OR " & condKoumoku2 & " OR " & condKoumoku3 & ")" End If If tempCond <> "" Then tempComd = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果_一覧", acNormal, , WhereCond これを実行すると クエリ式 '(OR((T_マスタ.項目1 like …')の構文エラー:演算子がありません。 と出ます。 どこを訂正すべきでしょうか? (項目を含まない状態ではうまく検索できてました。) Access2000です。

  • サブフォームのデータをそのままひっぱってきたい。

    Access2002です。 T_マスタ・T_サブ・T_備考という3つのテーブルをもとに F_マスタ・F_サブ・F_備考という3つのフォームを作成しています。 F_マスタの中にF_サブをサブフォームとして設定してあります。(氏名IDでリンク) F_サブの中に、Fサブ上の情報(氏名ID・データ年)で検索をして開く F_備考を開くためのコマンドボタンを設置してあります。 そこでF_備考を開いた後に、何も検索結果が出されなかったら、 入力をするために、「入力」というボタンを設置しました。 このボタンを押すと、F_サブ上の「氏名ID」「データ年」を 自動でF_備考の同じ名前のところへ入力したいのです。 ですが、実行すると「F_サブフォームは見つからない」という旨の エラーが出てしまいます。 それならF_サブを開いてしまえと、コマンドボタン上に、 F_サブを開く設定をしたのですが、今度は 「サブフォームに設定してあるフォームは開けない」という エラーメッセージが表示されてしまいました。 サブフォームのデータをそのまま参照することはできないのでしょうか? 実際のコードは以下のような簡単なものです。 F_備考の「入力」ボタン Me!氏名ID = Forms![F_サブ]![氏名ID] Me!データ年 = Forms![F_サブ]![データ年] どうやったらデータをひっぱってこれるのでしょうか? 宜しくお願いします。

  • ユーザーフォームを使った検索について

     仕事で使うために、VBAを勉強中ですが、検索の段階でつまずいてしまいました。自分なりに色々やってみたのですが、どうしてもうまくいきません。自分の知識不足が原因なのですが、どこをいじったらよいのかわからないでいます。  シート"一覧"にA列から整理No、職員番号、職種、氏名・・・・という風に、40列、130行程度データが入ります。 ユーザーフォームに複数のテキストボックスを作り、氏名を入力することで、任意のテキストボックスにその行のデータを返すようにしたいのですが、検索すると、アクティブセルの値が表示されます。  よろしくお願いします。 Private Sub cmb検索_Click() Dim frange As Range Dim frow As Long If (txt検索氏名 = "") Then MsgBox "氏名を入力して下さい。", vbExclamation Exit Sub End If Set frange = Worksheets("一覧").Columns(4).Find(what:=txt検索氏名.Text,LookIn:=xlValues, lookat:=xlWhole,searchorder:=xlByRows) If (frange Is Nothing) Then MsgBox "入力された氏名が見つかりませんでした。", vbExclamation Exit Sub End If frow = frange.Row txt検索整理番号.Value = Cells(検索データ行, 1).Value txt検索職名.Value = Cells(検索データ行, 2).Value txt検索職員番号.Value = Cells(検索データ行, 3).Value txt検索氏名.Value = Cells(検索データ行, 4).Value txt検索フリガナ.Value = Cells(検索データ行, 5).Value ’以下40行程度 End Sub

  • Access フォームで検索した結果をフォームで表示するときにあいまい検索をしたい

    Access2003を使用して、検索フォームをつくり、検索結果を別フォームへ表示させるプログラムを組みました。 その際に、かな検索をするとかなが完全一致でないと検索されません。 あいまい検索にてかな検索をする方法はありませんでしょうか? ソースは以下の通りです。 Private Sub cmdSearch_Click() On Error GoTo Err_cmdSearch_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(70) & ChrW(95) stLinkCriteria = "[カナ氏名]=" & "'" & Me![カナ氏名] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmdSearch_Click: Exit Sub Err_cmdSearch_Click: MsgBox Err.Description Resume Exit_cmdSearch_Click End Sub

  • Access検索フォームで範囲を指定しての検索

    クエリーで計算して出した結果をもとにフォームを使って検索をしたいのですが、うまくできません。 クエリーの計算式は誕生日から年齢を出すものが入っています。 フォームのボタンにVBAで '年齢 If Me!年齢開始.Value <> "" Then Age1 = "(Q_メイン.年齢 >= " & "0" & " and =< " & Me!年齢終了.Value & ")" WhereCond = WhereCond & tempOper & Age1 End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果", acNormal, , WhereCond となっています。 tempOperは、検索方法がORとANDが選べるようになっていて、それの結果が入っています。

  • Accessの検索で「~以外」

    VBAで検索フォームを作成しています。 普通は「○○にあてはまるもの」という検索ですが、 「○○以外のものを検索」というようにしたい場合はどのようにすればいいのでしょうか? 通常の検索はこんな感じです。 If Me!検索値.Value <> "" Then condKey = "(T_マスタ.フィールド like '*" & Me!検索値.Value & "*')" WhereCond = WhereCond & tempOper & condKey End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果", acNormal, , WhereCond access2000です。

専門家に質問してみよう