dポイントプレゼントキャンペーン実施中!

お世話になります
■判らないこと概要
アクセスで複数のコンボボックスの連結検索させ結果をサブフォームに
出す方法がわかりません。

■参考
http://www.moug.net/tech/acvba/0060026.htm
上記の例は検索結果がテキストボックスになっていますがサブフォームが理想です。
■追加機能
1、どのコンボボックスからでも検索できる
2、コンボボックスを一つでも選ぶとサブフォームが自動で絞り込んでいく

可能かどうかもわからず質問しております、わかるかたよろしくお願い申し上げます。

A 回答 (6件)

・最初は全件データを表示しておく


・指定されたコンボボックスに該当するデータを絞り込む(AND条件です。現在データ数が少ないためピンときませんが、同一日付等存在した時一目瞭然です。)
・全データ表示画面に戻すには「初期化」のコマンドボタンを押下する。

 BSR123さんの意図していたこととが違っていたら本当にごめんなさい。

この回答への補足

ありがとうございます

補足日時:2007/09/07 10:35
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2007/09/07 10:28

 たびたびすみません。


テーブルの項目を見て日付型、テキスト型があったので、これを検索条件にした時、From、Toの初期設定大変ですよね。
 そこで、コンボボックスがきちんと昇順で表示されているとの前提で、フォームのオープン時のイベントプロシージャーで以下のソースでコンボボックスの最初と最後の値が取得できます。

Private Sub Form_Open(Cancel As Integer)
Me![From] = Me![コンボ1].ItemData(0)
Me![To] = Me![コンボ1].ItemData(Me![コンボ1].ListCount - 1)
Me![サブフォーム名].Requery
End Sub

itemDataは1件目が0から始まりますので注意して下さい。

この回答への補足

ありがとうございます
以前でいていたエラーは解消されましたが
他のえらーがでます(foamが見つかりません)
何度一から作り直してもうまくいかずいきずまりました。

補足日時:2007/09/06 21:05
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2007/09/06 21:05

すみません、No.3の


Private Sub コンボ0_AfterUpdate()
Me![From] = Me![コンボ1]
Me![To] = Me![コンボ1]
Me![埋め込み1].Requery
End Sub

のコンボ0はコンボ1の間違いです。

この回答への補足

返事遅れてすみません
自分のデータに置き換えようやく完成いたしました。
メールでのファイルありがとうございました。
無知な物にメールアドレスへのリスクなんて全然平気です

本当にありがとうございました

補足日時:2007/09/13 21:15
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2007/09/06 21:05

>上記の内容でコンボ1に管理番号が表示しない


コンボボックスは非連結にして、値集合ソースに「管理番号検索用」のソース:SELECT データーベース.管理番号 FROM データーベース GROUP BY データーベース.管理番号 ORDER BY データーベース.管理番号;を入れていますか?(ビルダを使用すると便利です)

サブフォームのレコードソースは問題ありません。

>コンボ1に値を入力してエンターを押すとマクロを見つけることができません。
 サブフォームの名前ですが、フォームの名前をそのまま使っていませんか?ここで指定するサブフォーム/サブレポートの名前は親フォームで埋め込んだサブフォームをプロパティでみることの出来る名前になります。
 マクロがみつかりませんというメッセージが出るのは、イベントプロシージャーではなくマクロを指定しているからです。直接更新後処理に書くのではなく、更新後処理でイベントプロシージャーを選択し以下のコーディングをして下さい。

Private Sub コンボ0_AfterUpdate()
Me![From] = Me![コンボ1]
Me![To] = Me![コンボ1]
Me![埋め込み1].Requery
End Sub

またわからなければ、質問下さい。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます

お礼日時:2007/09/06 21:04

No.1です。

私の使用しているのがAccess2000なので処理が違っていたらご容赦願います。
 (1)親フォームにテキストボックスを追加する。
 (2)サブフォームのレコードソースの抽出条件にNo.1の抽出条件を付ける。
 (3)親フォーム、開くときのイベントで(1)で作成したテキストボックスへ値を転送(数値型なら、0~99999・・・、フィールドの特性によります。)し、
サブフォームをRequeryします。  
me![From]=0
me![To]=99999
me![サブフォームの名前].Requery
 (4)コンボボックス更新後のイベント
me![From]=me![コンボボックス名]
me![To]=me![コンボボックス名]
me![サブフォームの名前].Requery

 てな感じでどうでしょうか?
  

この回答への補足

返事ありがとうございます
何度やってもできません下記に情報を記します。

■テーブル名:データーベース
ID オートナンバー主 キー
管理番号 数値
日付 日付/時刻型
名前 テキスト型
記事 テキスト型

■フォーム名:INDEX
コンボ1 管理番号検索用
コンボ2 日付検索用
コンボ3 名前検索用
コンボ4 記事検索用
を生成
試しにコンボ1に
更新前処理:me![From]=0me![To]=99999me![サブフォーム].Requery
更新後処理:me![From]=me![コンボ1]me![To]=me![コンボ1]me![サブフォーム].Requery
としました。

テキスト1
を生成
■サブフォーム名:サブフォーム
レコードソースに
SELECT データーベース.ID, データーベース.管理番号, データーベース.日付, データーベース.名前, データーベース.記事
FROM データーベース
WHERE (((データーベース.管理番号)>=[Forms]![INDEX]![テキスト1FROM]
And (データーベース.管理番号)<=[Forms]![INDEX]![テキスト1TO]));
としました。

今までずっとやってましたができません;;
エラーになります。
再度ご教授くださいお願いします

■エラー及び不具合箇所
上記の内容でコンボ1に管理番号が表示しない

コンボ1に値を入力してエンターを押すと
'me![From]=0me![To]=99999me!サブフォーム'マクロを見つけることができません。
とでます。

宜しくお願い申し上げます

補足日時:2007/09/05 16:14
    • good
    • 0
この回答へのお礼

お返事ありがとうございました

お礼日時:2007/09/05 16:16

各コンボボックスに対し可視=いいえでFrom・Toのテキストボックスを作成し、初期値として、From=最小値、To=最大値をVBAで送り込みます。


サブフォームの元となるクエリに抽出条件を
 >=[Forms]![親フォーム名]![テキストボックスFROM] And <=[Forms]![親フォーム名]![テキストボックスTO]
 と付けておきます(いくつでもフィールドは選択可能です)。

 コンボボックスが選択されるる度に、更新後処理でFrom=コンボボックスの値、To=コンボボックスの値を送り込み、サブフォームをRequeryすれば、該当するデータの絞り込みが可能です。

この回答への補足

スミマセン
超初心者なのでコード等よろしくお願いします

補足日時:2007/09/05 10:38
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございます

お礼日時:2007/09/05 11:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています