• ベストアンサー

コンボボックスでの絞り込み2つはOKなのに3つ目がNGです

Access2000で社内システムを作っています。 行き詰ってしまいました。コンボボックス3つを利用してサブフォームを開くフォームを作っています。 サブフォームは取引マスタを利用してQ_売上げというクエリを元にしています。 サブフォーム名 売上げです。レコードは い  1/1 A商店 みかん 三ケ日 100円 100個 ろ  1/2 A商店 なし  長十郎 80円  50個 は  1/3 A商店 みかん 愛媛  80円  100個  に  1/3 B商店 なし  長十郎 80円  100個 コンボ1で「A商店」を選ぶとコンボ2では「なし」と「みかん」が選べます。 フォームの動作はコンボ1を選ぶとい、ろ、は、に全部の レコードが表示されます。 コンボ1を選ぶとい、ろ、はのレコードに絞り込まれます ここまではうまくいくのですがコンボ3を開いたとき レコードい、はを表示したいのに該当なしに なってしまいます。 コードは以下の通りです。 アドバイスよろしくお願い致します。 Private Sub cmd取引先_AfterUpdate() If Me.cmd取引先 & "" = 0 Then Me.売上げ.Form.RecordSource = Q_売上げ Else Me.売上げ.Form.RecordSource = _ "SELECT * FROM Q_売上げ " & _ "WHERE 取引先 = '" & Me.cmd取引先 & "'" End If End Sub Private Sub cmd商品名_AfterUpdate() Me.売上げ.Form.FilterOn = False Me!売上げ.Form.Filter = _ "取引先='" & Me!cmd取引先 & _ "' and 商品名='" & Me!cmd商品名 & "'" Me!売上げ.Form.FilterOn = True End Sub Private Sub cmdブランド_AfterUpdate() Me.売上げ.Form.FilterOn = False Me!売上げ.Form.Filter = _ "取引先='" & Me!cmd取引先 & _ "' and 商品名='" & Me!cmd商品名 & _ "' and ブランド='" & Me!cmdブランド & "'" Me!売上げ.Form.FilterOn = True End Sub

質問者が選んだベストアンサー

  • ベストアンサー
noname#22650
noname#22650
回答No.1

詳しくは分かりませんが、とりあえず Me!売上げ.Form.FilterOn = True の直前に debug.print Me!売上げ.Form.Filter と入れて、イミディエイトウインドウでFilterの内容を確認してみては?

minmina
質問者

お礼

ありがとうございました。 解決しました! コンボ3の連結列が3になってました。 1に直してOKでした。お恥ずかしい。

その他の回答 (1)

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.2

フォームのフィルターの事は詳しくないのですが、ご質問は 「コンボ1でA商店、コンボ2でみかんを選択後、コンボ3を開いたとき、 三ケ日と愛媛が候補に出てきて欲しいのに、何も出てこない」 という事でいいんでしょうか。そうであれば、 コンボ1で選択後はコンボ2のRowSourceを、 コンボ2で選択後はコンボ3のRowSourceを、 それぞれ書き換えればいけると思います。 ご質問が違っていたごめんなさい。 頑張ってくださいヽ(^。^)ノ

minmina
質問者

お礼

ありがとうございました。 単純な間違いでお恥ずかしい。 連結列が間違っていました。

関連するQ&A

  • コンボボックスの絞込みについて

    こんにちは アクセス2000で発注書を作っています ど素人です。。 コンボボックスの絞りこみについて教えてください。 現在5つのコンボで絞込みをしています コンボ1仕入先(メインフォーム) コンボ2種類1(サブフォーム) コンボ3種類2(サブフォーム) コンボ4商品名(サブフォーム) コンボ5詳細(サブフォーム) です。 コンボ1は一度選択すると、変更はありません。 コンボ5で選択決定した後、コンボ2、コンボ3、コンボ4は空白に、 コンボ5は全表示に設定しているのですが それだとコンボ1で選択した仕入先以外の商品も入ってしまうので コンボ5に、コンボ1で仕入れた商品のみを全表示したい場合は どうしたらいいですか? 説明下手で申し訳ありませんが どなかたご教授の程よろしくお願いいたします

  • アクセス コンボボックスで全項目表示

    アクセス2000で発注書をつくっています 発注書フォームのサブフォーム「発注書sub」内で 「大項目」「中項目」「小項目」「商品コード」の 4つのコンボボックスを設置し、 絞込み検索で商品明細を入力しています 新規レコードに移動するときに 「大項目」「中項目」「小項目」の値を空白にし、 4つめの「商品コード」コンボボックスで 全商品を表示させたいのですが どう記述していいのかわかりません 現在は Private Sub 商品コード_AfterUpdate() Me.品番 = Me.商品コード.Column(1) Me.商品名 = Me.商品コード.Column(2) Me.色 = Me.商品コード.Column(3) Me.サイズ = Me.商品コード.Column(4) Me.商品単価 = Me.商品コード.Column(5) End Sub Private Sub 小項目_Enter() Me!商品コード.Requery End Sub Private Sub 大項目_AfterUpdate() Me!中項目.Requery End Sub Private Sub 中項目_AfterUpdate() Me!小項目.Requery End Sub Private Sub 小項目_AfterUpdate() Me!商品コード.Requery End Sub 'フォーカスが移ると同時にドロップダウンさせる Private Sub 大項目_GotFocus() Me.大項目.Dropdown End Sub Private Sub 中項目_GotFocus() Me.中項目.Dropdown End Sub Private Sub 小項目_GotFocus() Me.小項目.Dropdown End Sub 'テスト Private Sub 摘要_LostFocus() Me!大項目 = Null Me!中項目 = Null Me!小項目 = Null Me!商品コード.Requery End Sub です。 発注書フォーム(単票フォーム) レコードソース「発注書」 サブフォーム名「発注書sub」(帳票形式) レコードソース「発注書明細」 リンク親フィールド子フィールドともに「発注書コード」 (他に表記が必要なのがあるかもしれませんが。。) テーブル ●発注書明細 「明細コード」「発注書コード」「商品コード」「品番」「商品名」「色」「サイズ」「商品単価」「数量」「摘要」です ●商品マスタ 「商品コード」「品番」「種類」「大項目」「中項目」「色」「商品名」「サイズ」「商品単価」 です。 どなたか ご指導のほどよろしくお願いいたします

  • コンボBOXで抽出した値をテキストBOXに表示したい

    入力用フォームで注文フォームを作成しているのですが、コンボBOXで商品Noを抽出し、テキストBOXに商品名を表示したいのですが、 Private Sub コンボ1_AfterUpdate() Me!テキスト1 = Me!コンボ1.column(1) End Sub と入力したのですが、他の行にも同じ商品名が表示されます。 商品NoをコンボBOXで指定し、数量を手入力という入力フォームを作成したいのです。 作成方法を教えてください。 よろしくおねがいします

  • 【Access】サブフォームのコンボボックス連携

    ACCESSで社員の資格情報を入力するシステムを作成したのですが 以下の問題を解決できず困っています。 どうすればいいか お力を貸して頂けないでしょうか? ■問題:メインフォームで別レコードに移動した際 サブフォーム内の連携コンボボックスを更新されない □コンボボックス2の表示項目 1.分類別No 2.資格名ID 3.資格名 3のみを表示していますが、 1つ目のコンボボックス1の数値で 全コンボボックス2の資格名が出てしまいます。 ■フォーム構成 メインフォーム内に以下を設置 1.移動ボタン 2.帳簿サブフォーム □サブフォーム構成 レコード1 コンボボックス1 コンボボックス2 レコード2 コンボボックス1 コンボボックス2 ~~ 最終レコード コンボボックス1 コンボボックス2 ■コントロールソース コンボボックス1:大分類ID コンボボックス2:資格名ID ■テーブル構成 資格名  資格名ID(主キー)  大分類ID  分類別ナンバー(大分類ごとの登録順ナンバー)  資格名   資格大分類  大分類ID(主キー  大分類名 (IT系・運転系など) ■コンボボックス2の値集合ソース(表示項目:資格名) SELECT 資格名.資格名, 資格名.分類別No, 資格名.資格名ID FROM 資格大分類 INNER JOIN 資格名 ON 資格大分類.資格大分類ID = 資格名.資格大分類ID WHERE (((資格名.資格大分類ID)=[Forms]![メインフォーム]![サブフォーム]![コンボボックス1])) ORDER BY 資格名.分類別No; ------------------------------------ サブフォームに記載し効果のなかったVBAコード ’再クエリ Private Sub Form_Current() Dim cntrl As Control If Not IsNull(Me![コンボボックス1]) Then For Each cntrl In Form.Controls If cntrl.ControlType = acComboBox Then cntrl.Requery End If Next cntrl End If End Sub ’ソース更新 Private Sub Form_Current() With Forms!メインフォーム名!サブフォーム名!コンボボックス2 .RowSource = .RowSource End With End Sub ■参考サイト 'サブフォーム内での2つのコンボボックスの連動について 'http://goo.gl/nfvxW '~ '>   コンボボックスAの更新後処理イベントに '> Me!コンボボックスB.Requery '> 'Me.コンボボックスB.RowSource = Me.コンボボックスB.RowSource '数値でコンボボックス選択 'http://goo.gl/ovZ3C 'リストボックスの行を選択するときは、「Selected(n)」を使います 'http://goo.gl/RbsWX 'サブフォームの指定 ' =Forms!フォーム名!サブフォームコントロール名.Form.テキストボックス名 'http://goo.gl/vKxtj

  • アクセス コンボボックスについて

    コンボボックス 印刷ボタンについて アクセス勉強中です。 フォームで作成した画面 だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにてフォーム印刷ボタンを作成したのですが、 1000人くらいの、すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャという部分は下記です。 またプロジャー以外に何かしなければならないのでしょうか?? どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub

  • 年を条件にデータを抽出するには?

    フィールド1 2012/01/01 2012/01/02 2011/01/01 2011/01/02 2010/01/01 2010/01/02 と言うデータがあり、それをもとに表形式でフォームを作りました。 フォームヘッダーにコンボボックス(名前:コンボ3)を作り、 値集合タイプ:値リスト 値集合ソース:"2012";"2011";"2010" にしました。 コンボボックスのAfterUpdateイベントでコンボ3に表示されている値を年を抽出したいのですが vbaでどうやればいいのでしょうか? クエリは作りません。 Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "# And #" & Me.コンボ3.Value & "#" & "'" Me.Form.FilterOn = True End Sub や Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "/01/01" & "# And #" & Me.コンボ3.Value & "/12/31" & "#" & "'" Me.Form.FilterOn = True End Sub にすると 実行時エラー クエリ式 <式> の <メッセージ> (エラー 3075) 入力した式が、メッセージに示されている原因によって無効です。フィールド名と区切り記号を正しく入力していることを確認してから、もう一度実行してください。 となってしまいます。 2010/01/01と2010/01/02を抽出させたいです。 ご回答よろしくお願いします。

  • コンボボックス 印刷ボタンについて

    アクセス勉強中です。 フォームで見ている画面だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにて印刷ボタンを作成したのですが、 すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャは下記です。 どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub

  • コンボボックスの更新

    アクセス2000を使用しています. 業務名というコンボボックスがあるサブフォームをいくつかのフォームで表示しています。 コンボボックスの内容を編集したり追加、削除も出来るように業務名一覧というフォームを作成して、閉じるボタンをクリックした時のイベントで更新をする作業をしたいのですが、 Private Sub cmd閉じる_Click() DoCmd.Close Forms!F業務名一覧.Requery で更新するという所までは分かるのですが、 Forms!フォーム名.サブフォーム名.コンボボックス名.Requery とすると、開いていないフォームがあるためにエラーになってしまいます。 なにか良い方法があれば教えて下さい.

  • ACCESS2000 コンボボックス絞込み

    こんにちは。以前に同じ質問をしたのですが、分からなかったので再度質問させて頂きます。 フォームでコンボボックスで入力しているのでが、 1つ目で選択したら2つ目のコンボボックスに1と関連するデーターしか表示しないようにしたいのですが・・。 テーブル 売上区分1  売上区分1ID  オートナンバー  売上区分1   テキスト型 テーブル 売上区分2  売上区分2ID  オートナンバー  売上区分1   数値  売上区分2   テクスト型 ファームの表示はそれぞれ、区分名が表示されるようになってます。 コンボ1で選んだのが、商品区分1IDが1ならコンボ2で表示されるのが、テーブル 売上区分2 の 売上区分1が1のものだけ表示できるようにしたいです。 説明が悪いかもしれませんが、お願いします。 初心者なもので、分かりやすく書いていただければありがたいです。お願いします。  

  • access2003コンボBOXの絞込み

    部品マスターテーブル内に300件以上のデータがあります。 部品マスターテーブル 品ID  品区分  品コード  品名  ****  ****  ・    a  ・ b *製品仕様のサブフォーム内に部品構成を作るのですが 製品仕様フォーム  製品コード 999   製品名 ZZZ    構成 sub   999  品ID 品区分 品コード 品名  員数 ****   ・   ・ 現在品コードをコンボBOXのリストから入力していますが 300件以上表示され見つけ出すのが大変です。 品区分のカテゴリでANDの絞り込みができれば表示件数は1/10に減ります。レコード入力の際サブフォームからの入力時にできないものでしょうか? 

専門家に質問してみよう