アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESS VBA で複数項目検索にテキストボックスとコンボボックスを使用したい

txtPC番号というテキストボックス、
com所属部門というコンボボックス、
txt使用者というテキストボックスの
どれかひとつの条件が入力されたときに
該当するフォームのレコードを抽出できるようにしたいのですが、
コンボボックスで選択した場合のみうまく抽出できません。
コードのどの部分に誤りがあるのでしょうか?
ご指摘願えませんでしょうか?
よろしくお願いいたします。

Private Sub cmd01_Click()


Me.FilterOn = False

If Me!txtPC番号 <> "" Then
Me.Filter = "[PC番号]like '*" & Me!txtPC番号 & "*'"
ElseIf Me!com所属部門 <> "" Then
DoCmd.Requery "com所属部門"
ElseIf Me!txt使用者 <> "" Then
Me.Filter = "[使用者]like '*" & Me!txt使用者 & "*'"
End If

Me.FilterOn = True

End Sub

A 回答 (3件)

コンボボックスの使い方に間違いがあり、入力した値が各txtコントロール値になってない。

連結列プロパティー等どうなっているか見直しします。

コンボボックスのときだけおかしいならこのコードは変えないで下さい。たぶん正しくて変える必要ありません。

もう1つボタンを用意しこちらにはコンボボックスの仕掛けで処理させると何がどう違うかわかりませんか?。

後、このボタンクリック以外で各txtコントロールをクリアしたりしてませんか。似た仕掛けを見たことあります。

3つ共値が無い時のロジックも入れた方が良いです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
一つ一つ作業していったところ、
無事抽出できるようになりました。
また、3つとも値がないときのif分も追加いたしました。

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

お礼日時:2010/07/02 11:44

所属部門で抜くときフィルタ設定しないで再クエリだけというのはどういう意図でしょうか。



条件変えて再クエリならまだわかります。
さらに、
ここがクエリなら3項目ともフィルタじゃなくてもクエリ側でなんか出来るようにも思います。
    • good
    • 0

うまく抽出できないというのはどう「うまく抽出」できないのでしょう。


期待値がわかりませんし、現状どうなっているのかもわかりません。

もし
「コンボボックスの際だけif文の中に入らない」(「DoCmd.Requery "com所属部門"」を実行しない)
ということであれば、ブレークポイントを敷いてのデバッグ時、com所属部門に値は入っていますか?

そもそも・・
コンボボックスの初期値はどうなっていますか?
またコントロールソースはベタ書きですか?
何かしかから引っ張ってきているのですか?

補足お願いします。

この回答への補足

アドバイスありがとうございます。

現状ではコードを書いて一番最初にコンボボックスで検索した部門が、
ほかの部門を選択して抽出ボタンを押しても出てきてしまうという
現象がおこってしまっています。

コンボボックスはプロパティ画面にて
値集合タイプ「テーブル・クエリー」
でテーブルの値を参照させています。

補足日時:2010/07/01 16:54
    • good
    • 0

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