Page 557 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼メインフォームとサブフォーム liee_chang 04/3/16(火) 15:21 ┗Re:メインフォームとサブフォーム クロ 04/3/16(火) 16:36 ┗Re:メインフォームとサブフォーム liee_chang 04/3/16(火) 17:31 ┗Re:メインフォームとサブフォーム クロ 04/3/16(火) 18:03 ┗Re:メインフォームとサブフォーム liee_chang 04/3/16(火) 18:20 ┗Re:メインフォームとサブフォーム クロ 04/3/16(火) 18:40 ┗Re:メインフォームとサブフォーム liee_chang 04/3/16(火) 19:24 ┗Re:メインフォームとサブフォーム クロ 04/3/17(水) 14:00 ┗Re:メインフォームとサブフォーム liee_chang 04/3/19(金) 11:27 ─────────────────────────────────────── ■題名 : メインフォームとサブフォーム ■名前 : liee_chang ■日付 : 04/3/16(火) 15:21 -------------------------------------------------------------------------
毎度ながら、おわかりになる方、教えて下さい! メインフォームで指定した条件を サブフォームであらわす。 ↑ここまでは問題ないのですが、 サブフォームに条件分岐を入れて実行すると、先ほどまでメインで条件してサブに表示されていた内容が消えて サブで条件したもののみ表示されてしまいます。 なぜかお分かりになる方お願いします。 おそらく、 サブに記述した条件がメインと連動していないから、と思うんですが どう記述して連結させるかわかりません・・。 |
>メインフォームで指定した条件を >サブフォームであらわす。 >↑ここまでは問題ないのですが、 アバウト過ぎます。処理の方法が書かれてないとコメントのしようが ありません。 フィルタでの処理なのか、クエリの抽出条件での処理なのか、あるいは リンク親/子フィールドでの処理なのか、あるいは他の方法なのか... >サブフォームに条件分岐を入れて実行すると、先ほどまでメインで条件してサブに表示されていた内容が消えて >サブで条件したもののみ表示されてしまいます。 こちらについてもコードを書いてください。 いずれにしても上記(メイン/サブ)の処理が分からないと... |
すみません。詳しく現在の記述状況を書きますのでお願いします。 ●メインフォームです。 フォーム自体は 大分類のリストボックス 中分類1の 〃 〃 2(各中分類ボックスは同じ表示内容) とあり、大分類で1.を選択すると中分類1〜3には1.−ア、1.−イが表示され 中分類1で1.−アと中分類2で1.−イを選択の上、detailフォームを表示します。 ********************************************************************** Private Sub daibunrui_Click() Rem 大分類で選択した値に当てはまるもののみフォームで記す。 DoCmd.OpenForm "detail_LIST", , , "大分類業種名= '" & Me!大COMBO & "'" End Sub ************************************* Private Sub 大COMBO_AfterUpdate() Rem 大分類コンボボックスの選択によって、中分類リストボックスの表示を変える。 Dim i As Integer, x As Integer For i = 0 To 3 Me("中LBOX" & x).RowSource = _ "SELECT 中分類 FROM 中分類テーブル WHERE 大分類業種名 = '" & Me!大COMBO & "'" x = i + 1 Next End Sub ************************************* Private Sub Sort0_Click() ’(実際はこのsubがあと3つあります) Rem ソートする DoCmd.OpenForm "detail_LIST", , , "中分類= '" & Me!中LBOX0 & "'" End Sub ********************************************************************** ●detailフォームです。 検索条件1〜3のテキストボックスに、オプションボタンが1〜2あります。 ********************************************************************** Private Sub AAA_Click() Rem レコードの検索&抽出 Rem テキストボックスに入力した値とオプションボタンを組み合わせて抽出。 Let opt = Me!Option2.Value '(value=1:and, 2:or, 3:not) '種類選択1(オプ1)がandを指定した場合 If Option1 = 1 Then Select Case opt Case 1 DoCmd.ApplyFilter , "所在地 like '*" & Me!検索条件1 & _ "'And 売上高>=" & Me!検索条件2 & _ "And 利益>=" & Me!検索条件3 Case 2 DoCmd.ApplyFilter , "所在地 like '*" & Me!検索条件1 & _ "'And 売上高>=" & Me!検索条件2 & _ "Or 利益>=" & Me!検索条件3 (省略) End Select ElseIf Option1 = 2 Then (省略:以降はoption1が2、3だったらと条件分岐が続く) End If End sub ********************************************************************** |
▼liee_chang さん: >************************************* >Private Sub Sort0_Click() ’(実際はこのsubがあと3つあります) >Rem ソートする > DoCmd.OpenForm "detail_LIST", , , "中分類= '" & Me!中LBOX0 & "'" >End Sub >********************************************************************** OpenFormで開いているので別フォームを開いていますね。 Accessではメインフォーム内に別のフォームを埋め込んだ場合に サブフォームといっています。 liee_chang さんの場合は単に「detail_LIST」というフォームを 開いているだけということでいいですか? >●detailフォームです。 ***(省略)*** >'種類選択1(オプ1)がandを指定した場合 > If Option1 = 1 Then > Select Case opt > Case 1 > DoCmd.ApplyFilter , "所在地 like '*" & Me!検索条件1 & _ > "'And 売上高>=" & Me!検索条件2 & _ > "And 利益>=" & Me!検索条件3 > Case 2 > DoCmd.ApplyFilter , "所在地 like '*" & Me!検索条件1 & _ > "'And 売上高>=" & Me!検索条件2 & _ > "Or 利益>=" & Me!検索条件3 ***(省略)*** ApplyFilterを使わずに Me.FilterOn = True Me.Filter = "所在地 like '*" & Me!検索条件1 & _ "'And 売上高>=" & Me!検索条件2 & _ "And 利益>=" & Me!検索条件3 のようにしてはどうでしょうか? ※未検証ですが... |
▼クロ さん: >liee_chang さんの場合は単に「detail_LIST」というフォームを >開いているだけということでいいですか? サブはそういう意味だったのですね! そうです。MAINのフォームの条件に合わせてdetailという別のフォームを開いています。 >ApplyFilterを使わずに > >Me.FilterOn = True >Me.Filter = "所在地 like '*" & Me!検索条件1 & _ > "'And 売上高>=" & Me!検索条件2 & _ > "And 利益>=" & Me!検索条件3 > >のようにしてはどうでしょうか? >※未検証ですが... とすれば、 Mainフォーム条件をそのまま、detailの条件も追加して表示するということでしょうか。 もしくは Mainのいろいろなプロージャをsetとかでまとめて detailのフォームの条件に追加する・・ なんて出来ないですかね?? setを使いこなせてない&SQLもほとんどわかっていないので 無謀かどうかがわかりません。 |
▼liee_chang さん: 前回のレスは間違ってました。ごめんなさい ***(省略)*** >'種類選択1(オプ1)がandを指定した場合 > If Option1 = 1 Then > Select Case opt > Case 1 > DoCmd.ApplyFilter , "所在地 like '*" & Me!検索条件1 & _ > "'And 売上高>=" & Me!検索条件2 & _ > "And 利益>=" & Me!検索条件3 > Case 2 > DoCmd.ApplyFilter , "所在地 like '*" & Me!検索条件1 & _ > "'And 売上高>=" & Me!検索条件2 & _ > "Or 利益>=" & Me!検索条件3 ***(省略)*** 既にメインフォームから送られたフィルタ条件が入っているので Case 1 DoCmd.ApplyFilter , Me.Filter & "AND 所在地 like '*" & Me!検索条件1 & _ "'And 売上高>=" & Me!検索条件2 & _ "And 利益>=" & Me!検索条件3 ...Me.Filter & "AND...の部分をそれぞれ追加してみてください。 |
▼クロ さん: >既にメインフォームから送られたフィルタ条件が入っているので > >Case 1>...Me.Filter & "AND...の部分をそれぞれ追加してみてください。 追加してみました!しっかりメインフォームからの条件もついて表示されました! ありがとうございます。 ただ、その後の条件で問題が発生しました。 And, Or以降があると、リスト一覧の表示が全くなくなってしまいます。 何度もすみませんが、わかりますでしょうか? Case 1 DoCmd.ApplyFilter , Me.Filter & "AND 所在地 like '*" & Me!検索条件1 & _ "And 利益>=" & Me!検索条件3 オプボタンによって条件をわけていたのですが、もしや◇◇の部分にも追加しなくてはいけなかったのでしょうか。 Me.Filter & "AND 所在地 like '*" & Me!検索条件1 & _ "'◇◇And 売上高>=" & Me!検索条件2 & _ "◇◇And 利益>=" & Me!検索条件3 |
変になった状態で「detail_LIST」をデザインで開きプロパティの「フィルタ」の ところが凄いことになってませんか? やっぱりメインフォームからdetail_LISTを開くときにフィルタで開かない方が かもしれませんね。 detail_LISTを開いたときにフィルタの条件が既に書かれているいるので、 detail_LISTフォーム上での追加フィルタ条件が追加されたり、追加条件が 変更されると「メインフォームからの条件」の条件を維持できなくなる。 メインからdetail_LISTを開くときは 1.SQL文でdetail_LISTのレコードソースを書き換える 2.クエリ(抽出条件付き)を作成してそれをdetail_LISTのレコードソースする の何れかにしたほうがいいかも? これであればメインからdetail_LISTへの条件は固定されますので、detail_LIST フォーム上での追加フィルタ条件を変更しても問題ないかも? テストしたサンプルを見てみますか? Accessのバージョンもついでに教えてください。 |
クロさん。 いつもありがとうございます。返信がおそくなってしまいました。すみません。 とりあえずですが解決しました。 先日クロさんに教えていただいた方法でです。 Case 1 '(検索条件1 and 検索条件2 and 検索条件3) DoCmd.ApplyFilter , Me.Filter & " AND 所在地 like '*" & Me!検索条件1 & "*'" DoCmd.ApplyFilter , Me.Filter & " AND 売上高>=" & Me!検索条件2 & "" DoCmd.ApplyFilter , Me.Filter & " AND 利益>=" & Me!検索条件3 & "" これで、条件を変えたい時は一旦MAINのフォームに戻って再検索というようにしました。 うーん、やはりフィルタを使ってだとどうも応用がきかない感じですね・・。 ちょっとSQLの勉強をしてから加工を続けていきたいと思います。 できたらクロさんのサンプルも貼っていただけるとうれしいです。access ver2000 |