Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル2つのコンボボックスで選択した内容に合致するレコードをフォームに表示させたい
記事No172291
投稿日: 2018/06/19(Tue) 13:38
投稿者さくら色
OS:Win10
Access Version:Access2016

検索用フォームで、1つ目のコンボボックスから「クラス」を選択し、
さらに2つ目のコンボボックスでチェックの有無を選択して検索ボタン
を押したら該当するレコードの「No」と「クラス」と「生徒氏名」が結
果表示フォームに表示される、ということをしたいです。

【テーブル】
 No      オートナンバー型
 クラス    テキスト型
 生徒氏名   テキスト型
 委員チェック Yes/No型
 担任チェック Yes/No型
 主任チェック Yes/No型
 教頭チェック Yes/No型
 (これらの他にも住所や電話番号等のデータがあります)

「〇年〇組」(1つ目のコンボボックス)で「委員のチェックがまだ」
(2つ目のコンボボックス)の生徒氏名を「検索」(検索ボタン)

2つ目のコンボボックスの内容を「委員のチェックがまだ」「担任のチ
ェックがまだ」「主任のチェックがまだ」「教頭のチェックがまだ」に
して、それぞれテーブルのYes/No型のNoが抽出されるようにしたいので
すがどのようにしたらよいのかがわかりません。

タイトルRe: 2つのコンボボックスで選択した内容に合致するレコードをフォームに表示させたい
記事No172292
投稿日: 2018/06/19(Tue) 16:39
投稿者ナバ
こんにちは。

> 検索用フォームで、1つ目のコンボボックスから「クラス」を選択し、
> さらに2つ目のコンボボックスでチェックの有無を選択して検索ボタン
> を押したら該当するレコードの「No」と「クラス」と「生徒氏名」が結
> 果表示フォームに表示される、ということをしたいです。

考え方としては、テキストボックスやコンボボックスの情報を
抽出条件に組み込む手法が良いと思います。

手段としては、クエリーのSQLを書き換えたり、フォームのレコードソースを書き換えたり、
フォームにフィルターをかけたりといろいろあります。

フォームを開くときに抽出条件を付ける例:
http://www.accessclub.jp/bbs2/wforum2.cgi?mode=allread&no=42905&page=0

タイトルRe^2: 2つのコンボボックスで選択した内容に合致するレコードをフォームに表示させたい
記事No172293
投稿日: 2018/06/20(Wed) 11:47
投稿者さくら色
こんにちわ。
返信ありがとうございます。

リンク先を確認しましたが、ではこれをどう自分の作成したいものに応用すればよいのかとなるとサッパリです。

「担任チェック」がNoのものだけを抽出したクエリを作成し(単に「担任チェック」の抽出条件に「No」と書いただけですが)それを表示するフォームを作成することはできるのですが、これを4つのチェック全てでやろうとすると現状、クエリが4つ、コンボボックスと検索ボタンが4つ、フォームも4つ…と面倒なことになります。

それこそクエリーのSQLを書き換えたり、フォームのレコードソースを書き換えたり、フォームにフィルターをかけたり、ということが必要ということなのだと思うのですが、具体的にどこをどう書き換えればよいのかがわかりません。

過去の質問や、別のサイトの質問やQ&Aも見ていますが、似ていることであっても合致はしないので、そこでつまづいています。

タイトルRe^3: 2つのコンボボックスで選択した内容に合致するレコードをフォームに表示させたい
記事No172294
投稿日: 2018/06/20(Wed) 15:00
投稿者ナバ
> 過去の質問や、別のサイトの質問やQ&Aも見ていますが、似ていることであっても合致はしないので、そこでつまづいています。

もちろんまったく同じケースはなかなかありません。
考え方と手法を身に着ける必要があります。

> 「担任チェック」がNoのものだけを抽出したクエリを作成し(単に「担任チェック」の抽出条件に「No」と書いただけですが)
このクエリーをSQLビューで開いてみてください。
Where 〜
の部分に書かれているのが抽出条件です。
自分の思うようなクエリーを作る → そのクエリーのSQLビューでどのような抽出条件を書けばよいかを理解する
という順序でご自分のシステムの場合を考えてみてください。

ちなみに、Yes/No型のNo とフィールドの「No」は混乱する場合がありますから
可能ならばフィールド名を「RNo」などに変えた方がよいです。

タイトルRe^4: 2つのコンボボックスで選択した内容に合致するレコードをフォームに表示させたい
記事No172297
投稿日: 2018/06/21(Thu) 13:18
投稿者さくら色
こんにちわ。

検索ボタン(コマンド31)を設置し,
***
Private Sub コマンド31_Click()

If [チェック選択コンボボックス] = "委員のチェックがまだ" Then
DoCmd.OpenForm "検索結果表示フォーム", , , "委員チェック=False"
End If

If [チェック選択コンボボックス] = "担任のチェックがまだ" Then
DoCmd.OpenForm "検索結果表示フォーム", , , "担任チェック=False"
End If

If [チェック選択コンボボックス] = "主任のチェックがまだ" Then
DoCmd.OpenForm "検索結果表示フォーム", , , "主任チェック=False"
End If

If [チェック選択コンボボックス] = "教頭のチェックがまだ" Then
DoCmd.OpenForm "検索結果表示フォーム", , , "教頭チェック=False"
End If

End Sub
***

上記の記述でそれぞれのチェックに該当するレコードをフォームに表示させることはできました。

で、これとは別に

***
Private Sub コマンド31_Click()

DoCmd.OpenForm "検索結果表示フォーム", , , "[クラス]=" & "'" & [クラス選択コンボボックス] & "'"

End Sub
***

との記述で、該当のクラスのレコードをフォームに表示させることもできました。

が、これを組み合わせて「該当のクラス」の「該当のチェックがまだ」のレコードを表示させようとしたところでつまづいております。
単純にAndで繋ぐと「エラー13 型が一致しません」と出てそこで止まってしまいます。

どうやったらうまく組み合わせることができるでしょうか。。

タイトルRe^5: 2つのコンボボックスで選択した内容に合致するレコードをフォームに表示させたい
記事No172298
投稿日: 2018/06/22(Fri) 09:15
投稿者ナバ
ここまでできれば、あと少しです。

> 単純にAndで繋ぐと「エラー13 型が一致しません」と出てそこで止まってしまいます。

「AND」が""の中に入るように組み合わせてください。

If [チェック選択コンボボックス] = "委員のチェックがまだ" Then
DoCmd.OpenForm "検索結果表示フォーム", , , "委員チェック=False AND [クラス]=" & "'" & [クラス選択コンボボックス] & "'""
End If

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る