- 締切済み
access2003コンボBOXの絞込み
部品マスターテーブル内に300件以上のデータがあります。 部品マスターテーブル 品ID 品区分 品コード 品名 **** **** ・ a ・ b *製品仕様のサブフォーム内に部品構成を作るのですが 製品仕様フォーム 製品コード 999 製品名 ZZZ 構成 sub 999 品ID 品区分 品コード 品名 員数 **** ・ ・ 現在品コードをコンボBOXのリストから入力していますが 300件以上表示され見つけ出すのが大変です。 品区分のカテゴリでANDの絞り込みができれば表示件数は1/10に減ります。レコード入力の際サブフォームからの入力時にできないものでしょうか?
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- skikichi
- ベストアンサー率65% (45/69)
「部品ID/CD」の「コントロールソース」を空欄にすると全行が同じになりますので、もともとのデータ項目に戻してください。 部品名以降の列の内容は、区分とコードだけを取り上げて他の項目は省略してクエリビルダを作成しましたので、必要に応じて項目を追加しカスタマイズしてください。 新規にレコードの追加ができないのは、クエリーのリレーションの構成を見直してみてください。 もともと追加できていないと思います。
- skikichi
- ベストアンサー率65% (45/69)
まず既存のクエリーを流用されない方がいいと思います。 シンプルに作成しましょう。 「部品ID/CD」の「コントロールソース」を空欄にします。 値集合ソースの欄に記述されている既存のクエリー名を削除します。 空欄になったところで右の「・・・」ボタンを押下。 「T部品マスター」を追加。 (※必要に応じて他のテーブルとリレーションを取る) 「部品区分」と「社内品CD」だけをドロップダウン。 「部品区分」の抽出条件に「=[テキスト26]」と記述し「表示」のチェックをはずす。 以上でクエリビルダの右上のXをクリックしプロパティーの設定を保存する。 「区分」フィールドの更新後処理のイベントに下記記述。 Private Sub テキスト26_AfterUpdate() 部品ID.SetFocus 部品ID.Requery 部品ID.Dropdown End Sub 編集ロックをはずす。 以上です。
- skikichi
- ベストアンサー率65% (45/69)
コンボ2で品区分を選択した瞬間にコンボ1に該当の品区分に一致する品コード一覧のコンボボックスを表示させたいのであれば・・・ コンボ2の「更新後処理」のイベントに下記を記述してください。 Private Sub コンボ2_AfterUpdate() [コンボ1].SetFocus [コンボ1].Requery [コンボ1].Dropdown End Sub もちろん、フォームが違う場合にはフォーム名の指定から記述してくださいね。
お礼
お世話になってます。 そうなんです、こんな風にしたかったのです。 品区分をコンボに変え値ソースを品区分マスター にしました。 品区分のイベントから更新後処理に以下のコード記述。 Private Sub 品区分_AfterUpdate() 部品ID.SetFocus 部品ID.Requery 部品ID.Dropdown End Sub 品区分をクリック後に品コードが自動でDropdownリスト表示されましたが 品区分の設定条件が品コード(部品ID)のドロップダウンに反映されず、全件出てきました。 VBAとかコードを使ったことない物で良くわかりませんでした。 もしできましたら、この部分をhomePageにUP(画像掲示板)しましたので診てもれえれば幸いです。 http://tcom.dip.jp
- skikichi
- ベストアンサー率65% (45/69)
もしかして、左右にスクロールすれば品コードが現れないですか? ちなみにフィールドを思いっきり広げてみてください。 すべての列が表示されると思いますよ。 もし、品コードだけを表示させたいのであればクエリーで品コード以外の「表示」のチェックをはずしてください。 もしくは、列幅0;0;0;0;2にしてください。 Sample: コンボボックス名「コンボ1」の値集合ソースのクエリーで「品コード」「品区分」を指定し、品区分の抽出条件を「Like ("*" & [コンボ1] & "*")」とし「表示」のチェックをはずす。 「コンボ1」の「キークリック時」のイベントで下記VBAを記述 Private Sub コンボ1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyRight Then DoCmd.RunCommand acCmdSaveRecord Me.[コンボ1].Requery Me.[コンボ1].Dropdown End If End Sub って感じです。 別のコンボボックス「コンボ2」で品区分を選択し、「コンボ1」で該当の品区分に属する品コードの一覧表示をさせるには、上記のSampleの・・・ 「コンボ1」の値集合ソースのクエリーの品区分の抽出条件を「=[コンボ2]」とすればよいです。
- skikichi
- ベストアンサー率65% (45/69)
コンボボックスの列数をたとえば2(品コード、品区分)にして、コンボボックスの一覧に2項目を表示されてますか? そうすれば、品区分で絞り込むことができます。
お礼
何度もアドバイス頂き、有難うございます。 コンボBOXに2行表示(品コード・品区分)を表示させ品区分で絞り込むことができました、 でも選択後に表示されるのが品区分の値でした 品コードを表示させたかったのですが?? subformのソース(クエリのフィールド順序)は 部品ID・品区分・分類・部品名・品コード・*** コンボboxのプロパティは 列数5 列幅0;1;0;0;2 連結列1です。 ドロップダウンリストの表示と選択後box内に表示をさせるフィールドの指定がわかりません 絞込みは、同一のコンボbox内でしかできないんですか
- skikichi
- ベストアンサー率65% (45/69)
つまり・・・ 品区分の中から、入力した文字列をキーにしてあいまい検索をしてその一覧をコンボボックスとして自動表示することは可能です。 1.コンボボックスの入力フィールドに検索文字列入力 (何文字でも、検索したい文字のどの位置でも可) 2.「→」キー押す(「→」でなくても何のキーでも可) 3.Requery、Dropdownで自動的に絞り込んだ一覧をコンボボックスに表示する。
- skikichi
- ベストアンサー率65% (45/69)
ANDの絞込みの具体例がないとやり方が変わってくるのですが。 こんなやり方でもいいですか? コンボボックスの入力フィールドに検索したい文字(たとえば、「ar」を入力し「→」キーを押すと「ar」の文字が含まれるリストをすべてコンボボックスとして表示する。 「sugar,garden,artist」とか。 つまり絞り込み検索ができるわけです。
お礼
PC?回線?の調子が変です、何回も送っていたらごめんなさい。 comboBOXに入力し同じようコードを抽出できました、ありがとうございます。 でも、品区分がその他の部品のカテゴリではコードに規則性はなく同手法が使えません 品区分でカテゴリを絞って、カテゴリ内から目的の品コートを見つけることができたら楽ですね。゛
お礼
お世話様です。 アドバイスの通りやってみましたすると 区分設定後に、部品IDから該当品の社内品コードのリストが自動的にdropdownする様になりました。 しかし、ほかの部分で変な動作をしています。 *社内品コードを選ぶと全ての行のコードが同じ表示になってしまう。 *部品名以降の列の内容が正しく表示されない(前の内容の表示のまま) *サブフォームに新しい行の追加ができない 何処かでリレーションが変に影響しているのかな???