• ベストアンサー

コントロールの違う複数条件

個人情報のフォームから複数条件でレコードを抽出したいと考えています。 オプションボタンとコンボボックスとトグルボタンなのですが、ANDを使って条件をつなごうと思っているのですが、なかなかうまくいきません。 この方法以外でもよい方法があれば教えて欲しいのですが。 また抽出したフォームに修正や追加や削除もしたいと思っています。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。 多分連結うんぬんは関係ないと思います。 とりあえず、このコードが書かれてあるプロシージャ([抽出]ボタンのクリックイベント?)の先頭にブレークポイントを設定して、1行実行してみて、どこでエラーが出るか確認して下さい。 また、会社名のところでエラーが出るようなら、その時のcbo会社名.Valueに入っている値を調べてみて下さい。 多分エラーになるとデバッグモードに入れるので、その時にイミディエントウィンドウに、 ?Me!cbo会社名.Value と入力してEnterを押すと、値が出力されます。 あと、文字列の比較は「'」で括らないといけませんが、cbo会社名.Valueの前後にちゃんとついてますか。 それと、フィールド名やコントロール名に空白やハイフンが入っている場合は、[]で括らなくてはいけません。 例)cboF 会社名.Value→[cboF 会社名].Value とりあえず、気づいたのはこのくらいです。 では。

t-tomo
質問者

お礼

出来ました!! maruru01さんのおっしゃった通り、1行ずつ実行して確認して見ました。 長い間、お付き合いして頂いてどうもありがとうございました。 これからもよろしくお願いします。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

再びmaruru01です。 抽出方法としては、 1.まず、全件でフォームを開いておいて、Filterプロパティに抽出条件を設定し、FilterOnプロパティをTrueにする。 2.予めサブフォームを作成しておき、DoCmd.OpenFormの第3引数に抽出条件を設定して実行する。 3.抽出結果で一時的なテーブルを作成し、それをサブフォームのソースに設定して開く。 などがあります。 いずれにしろ、抽出条件の文字列を作成することに変わりはありません。 それで、抽出条件の書き方ですが、個人情報テーブルの各フィールドのデータ型で書き方が異なります。 まず、在職/退職はYes/No型とします。(在職がTrue)   condShoku = "[フィールド名] = " & chk在職.Value 次に、会社名はText型(またはMemo型)として、   condKaisha = "[フィールド名] = '" & cbo会社名.Value & "'" そして、ふりがなは、前に回答しましたが、   condFurigana = "[フィールド名] LIKE '" & GetHiragana(ふりがなフレーム.Value) "*'" で、これらをANDでつなぎます。   WhereCond = condShoku & " AND " & condKaisha & " AND " & condFurigana このWhereCondを上記の抽出条件として設定して、[抽出]ボタンのクリックイベントで実行すればいいです。 詳細はヘルプなどを参照して下さい。 では。

t-tomo
質問者

補足

アドバイスをありがとうございました。 早速、上記の方法で試してみたのですが、「文字列の構文エラー」というエラーになってしまいました。 一つ一つの条件で実行したところ、会社名のところでこのエラーが出てしまいます。 個人情報のフォームの会社名のフィールドを会社情報のテーブルと連結してコンボボックスで入力出来るようにしてあるのですが、連結列を1にしてあるからでしょうか? いろいろ考えてみたのですがどうしても分かりません。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 まず、お使いのデータベースの種類とバージョンを明記しましょう。 文面からAccessと思いますが、それならバージョンを。さらにOSも併記した方がいいでしょう。 それから、どううまくいかないのか、具体的に書かないと答えようがありません。 問題のあると思われる部分のコードなどを載せると回答し易いですよ。 また、「レコードを抽出」と行ってもどういう動作をさせたいのかも書いた方がいいでしょう。 例えば、抽出条件用のフォームがあるかどうか、抽出結果をサブフォームに表示するかどうかとか。 では。

t-tomo
質問者

補足

説明不足ですみませんでした。 WINDOWS 98 ACCESS 2000です。 抽出条件用のフォームは作成しましたが、追加、削除、修正が出来るのであればサブフォームで表示するのでもどちらでもかまいません。 個人情報のフォームに txt個人名、txtふりがな、cbo会社名(会社情報と連結)、chk在職の有無を作成したものから オプションボタンで在職か退職か選択 コンボボックスで会社名を選択 あ~わのトグルボタンでふりがなを選択 の抽出条件で抽出ボタンをクリックして抽出したいと考えています。 これでよろしいでしょうか? よろしくお願いします。

関連するQ&A

  • 複数の抽出条件

    ACCESSで顧客の情報を複数の条件で抽出したいと考えています。 チェックボックスで在職or退職 コンボボックスで会社名の指定 トグルボタンで(あ~わ) なのですが、この条件を満たすデータを実行ボタンをクリックした時に抽出したいのですが、こんな複雑な条件はマクロでは出来ないのでしょうか?

  • Access2007でフィルタ条件を保存しないようにするには?

    Access2007でシステムを作っています。 表形式のフォームのフォームヘッダにコンボボックスを作成し、 コンボボックスで選択した値でレコードが抽出されるようにしたいのです。 今作っているのは、マクロの「フィルタの実行」でWhere条件のところに条件を入れています。 コンボボックスの更新後処理でそのマクロを実行しています。 フォームを開いて、1回目はうまく動くのですが、コンボボックスの値を変更しても抽出結果が最初と変わりません。 どうすればよいでしょうか? 良い方法があれば教えてください。

  • データシート(サブフォーム)の複数条件抽出について。

    データシート(サブフォーム)の複数条件抽出について。 現在メインフォーム上に、オートフォーム:データシート(基となるテーブル(マスターA)選択) をサブフォームとして置き、メインフォーム上にコンボボックス2個(コンボ1、コンボ2)&コマンドボタン1個設置してあります。 基テーブル(マスターA)には 種類    サイズ    商品名 の3フィールドがあります。 やりたい事は、コンボ1(対応フィールド:種類)及びコンボ2(対応フィールド:サイズ)で選択し コマンドボタンを押下で、サブフォーム内データの抽出です。 まだACCESSを始めたばかりの未熟者のため、ネットや本で調べながらやっているのですが どうしても上記がわからなくて完全に進行ストップしてしまったので ご教授願いたいと思い質問させて頂きました。 Filterをかけ、条件はANDで繋げば良いとは思うのですが どのようにコードを組み上げれば良いのか調べつかないため 何卒ご教授の程宜しくお願い致します。 また、質問させて頂いている間も引き続き自分で調べながら やっていこうと思います。

  • Accessフォームでの複数条件検索

    検索用テキストが4つとコンボボックスが1つあり、検索ボタンというコマンドボタンを押すと 該当するレコードを表示させるフォームを作りました。 以下がそのVBAです。 Private sub 検索ボタン_click() Dim strfilter As String, strexp As String, aryope As Variant If Not IsNull (me.一) Then strfilter = "And 出版社 Like '*" & Me.一 & "*'" End If If Not IsNull (me.コンボ62) Then strfilter = "And 種類 Like '*" & Me.コンボ62 & "*'" End If If Not IsNull (me.三) Then strfilter = "And 番号 Like '*" & Me.三 & "*'" End If If Not IsNull (me.四) Then strfilter = "And 発刊日 = # " & Format (me.四. "yyyy-mm-dd") & "#" End If If Not IsNull (me.一) Then strfilter = strfilter & " AND " & BuildCritera ( "タイトル", dbText, "*" Replace ( me.五, "", "*AND*") & "*") End If 改正したいことは   1. 検索用テキストボックスに入力された値全てを満たすレコードを表示したい(現在は例えば     出版社、タイトル、番号の3つを入力するとそれぞれの項目にヒットする物がすべて検出さ     れる)   2. テキストボックス[三]の番号は完全一致で抽出したい(26を抽出したいのに126や2673     等も抽出されてしまう)   3. テキストボックス[四]の発刊日は西暦表示から和暦で入力して検索したい     (テキストボックス[四]をコンボボックスに変え、西暦・和暦両方表示にし、[四A]を追加して     月日という名前にしてこれら年月日をくっつけて完全一致で検索する方法を考えましたが     記述がわかりません)   5.タイトルがWeb検索の様に複数曖昧検索ができない     中途半端な検索で抽出してる状態です。     どなたか手直しいただけますでしょうか? 

  • フォームを開くボタンを1個でコントロールしたい

    「やりたいこと、ご指導頂きたいこと」 1,現在の運用方法(下記)ではコマンドボタンが4個と多く、使いづらいのでコマンドボタンを1個で完結できる方法が知りたいです。 2,個人的なお願いですが「マクロ」で対応できる方法があれば、そちらでお願いしたいと思います。理由は、VBAのスキルが低レベルで話にならない為。但し、不可の場合は、可能な方法でご指導願います。 「現在の運用方法の紹介」 企業の連絡情報帳をアクセスで運用しています。尚、フィールドの数は10ありますが、質問内容には検索項目の4個を紹介させて貰っています。 運用の概要ですが、検索専用フォームにコンボボックスを4個つくり、コンボボックスで企業リストテーブルを参照させて希望のフィールド(会社名、製品名、商品名、得意技)を選択させています。選択後はコンボボックスの横に配したコマンドボタン4個を使って個別フォームを開いている。運用の背景ですが、絞込検索では都合が悪い事情がある為です。 「各オブジェクトの紹介」 1,テーブル名:企業リスト 2,フォーム名:検索専用フォーム(レコードソースなし) 3,コンボボックスの名前:会社名、製品名、商品名、得意技 ・企業リストの各該当フィールドを値集合ソースにて参照 4,企業リストクエリ ・会社名(検索専用フォームのコンボボックス「会社名」を抽出条件に) ・製品名(検索専用フォームのコンボボックス「製品名」を抽出条件に) ・商品名(検索専用フォームのコンボボックス「商品名」を抽出条件に) ・得意技(検索専用フォームのコンボボックス「得意技」を抽出条件に) 5,フォーム名 ・会社名検索結果(レコードソースに会社名クエリ参照) ・製品名検索結果(レコードソースに製品名クエリ参照) ・商品名検索結果(レコードソースに商品名クエリ参照) ・得意技検索結果(レコードソースに得意技クエリ参照) 以上ですが、他に細かな設定(ファイル操作・選択文字の選択後の消去・等々)もありますが割愛して居ります。どうか宜しくお願いします。

  • ACCESS クエリの抽出条件

    毎度お世話になります。 クエリをレコードソースとするフォームから、コマンドボタンでアクションクエリを実行するときの抽出条件の書き方を教えて頂けないでしょうか? 二つのテーブル(別のACCESSファイルからリンク)を基にパラメータクエリを作っています。 そのクエリを基にフォームを作っています。 さらに、そのフォームに追加クエリを実行するボタンを置いています。 フォームに表示してあるレコードだけ(パラメータで抽出されたレコードだけ)、他のテーブルに追加しようと思っているのですが、実行ボタンを押すともう一度パラメータが出てきてしまいます。 多分テキストボックスの値を読み取る際にレコードソースがテーブルでないのが問題じゃないかと思うのですが。。。 テーブル:Container / Items クエリ:From_Con(パラメータは[Container]フィールド) フォーム:From_Con(テキストボックス名は[txtContainer]) 追加クエリ:From_Con_App(抽出条件は[Forms]![From_Con]![txtContainer]としてみたがうまく動きません。) デザインビューの抽出条件を使う方法? SQLを使う方法? QueryDefを使う方法? いろいろありそうですが、ネットで検索してもヒットしません。 分かりにくい説明で申し訳ありませんがご教授願います。

  • クエリーの抽出条件について

    アクセス97を使っているんですが、クエリーの抽出条件についてどうしてもわからないことがあるので出来ましたらお教え願いたいんですが。 フォーム上でトグル(スイッチ)がオンの場合だけクエリーの抽出条件で検索をかけたいと思っています。 フォームでトグル(スイッチ)がオフの場合は抽出条件なしで全データを抽出したいんです。 複数のクエリーを使えば何とかなるとは思いますがなんか見栄えによくないような気もしますし、たくさんクエリーが必要になってしまいます(スイッチをたくさん使う予定なので)。 もし、抽出条件をきる方法をご存知の方がおられましたら、お教えください。

  • access クエリでIIF文で抽出条件なし

    フォームにコンボボックスを用意し、(コンボボックスは、「両方」、「条件A」、「条件B」の3項目です) クエリで抽出条件にIIF文を使い、 IIf([Forms]![フォーム]![コンボボックス]="両方",'',[Forms]![フォーム]![コンボボックス]) ”両方”を選択した場合は、「抽出条件なし」としたいのですが、できませんでした。 別案として、 IIf([Forms]![フォーム]![コンボボックス]="両方","条件A" or "条件B",[Forms]![フォーム]![コンボボックス]) なども試しましたができませんでした。 どうか解決方法をご教授願います。

  • ACCESS2000のコンボボックスについて

    OS:WindowsXP AP:ACCESS2000 テーブルと連結で帳票フォームを作成しています。 フォームヘッダー : 検索用のテキストボックス、コンボボックス、ラジオボタン等配置           (非連結オブジェクト) 詳細 : 上記検索条件の値に合致したものを抽出し一覧表示 フォームプロパティ : 更新の許可「はい」、削除の許可「はい」、追加の許可「はい」             レコードセット「スナップショット」 フォームヘッダーにて検索条件を入力し、検索を行います。 該当レコードがなしの結果となった場合にそのままの状態で フォームヘッダーの検索条件に入っている値をクリアし フォームヘッダーのコンボボックスにて値を選択すると値の表示が消えてしまいます。 消えているのは表示のみのようで検索ボタン押下で抽出を行うと該当レコードが抽出されます。 この表示を正常にさせるようにするにはどうしたらよいでしょうか? RequeryやRepaintをコードに追加したのですがうまくいきません。 他のサイトでも検索をかけたのですが今のところ該当するような記事に辿り着けていません。 正常動作が確認できているのは下記のパターンの時となります。 ・フォームプロパティにてレコードセットがダイナセット、追加の許可がはいの場合  (更新の許可、削除の許可は「はい」でも「いいえ」でもどちらでもOK)  ※運用上、一覧参照画面としたいので追加の許可は「いいえ」としたいですが「いいえ」の場合はNGでした ・レコードカウントが1件以上の場合 解決方法を知っていらっしゃる方いらっしゃいますでしょうか? 宜しくお願い致します。

  • データシート(サブフォーム)の複数条件抽出について。

    データシート(サブフォーム)の複数条件抽出について。 データシート(サブフォーム)の複数条件抽出について。 環境:ACCESS2000 DAO利用  現在メインフォーム上に、オートフォーム:データシート(基となるテーブル(マスターA)選択) をサブフォームとして置き、メインフォーム上にコンボボックス2個(コンボ1、コンボ2)&コマンドボタン1個設置してあります。 基テーブル(マスターA)には 種類    サイズ    商品名 の3フィールドがあります。 やりたい事は、コンボ1(対応フィールド:種類)及びコンボ2(対応フィールド:サイズ)で選択し コマンドボタンを押下で、サブフォーム内データの抽出です。 上記をクエリ使用でも、vba利用でもどちらでも大丈夫です。 先日この質問板で丁寧に教えて頂いたのですが、 回答して下さった方もおっしゃってたのですが、 動的に動かないとの事で、やっているうちにやはり 動的でないと難があるようなので 再度ご質問させて頂きました。 何卒ご教授の程宜しくお願い致します。 先日の質問板は下記です。 http://okwave.jp/qa/q5845718.html また、質問させて頂いている間も引き続き自分で調べながら やっていこうと思います。