• ベストアンサー

access でfilter文

accessで、条件付のフィルターをかけたいです。 NZ、insullを色々調べたのですが、どうもうまくいきませんでした。 TABLEAには、aaa,bbbがあります。 aaaがnullのときは、aaa>100 bbbがnullのときは、bbb>100でフィルターをかけたいです。 Me.Filter にはどのような式を設定すればよいでしょうか。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

テーブルのフィールドがNullであるかは たとえばレコードセットをrsとし、 rsを参照して、  rs.FindFirst "[aaa] Is Null" のような使い方をします。 この場合だと、 If IsNull(rs!aaa) Then が当てはまっているかもしれません。 フォームのプロシージャがどのような ものか、流れ、などがわからないので こんなところですが。 何かあれば書き込みを。

gonchin01
質問者

お礼

上記を参考にできました! ご連絡おくれてすみません、ありがとうございました。

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

確認です。 (1)Me.Filterはフォームにたいしてですか。 あるいは何かのコントロールですか。 (2) >aaaがnullのときは、aaa>100 >bbbがnullのときは、bbb>100 この二つの条件の使い方は Me.Filter (aaaがnullのときは、aaa>100) AND (bbがnullのときは、bbb>100) または If aaaがnullのとき Then Me.Filter aaa>100 Else bbbがnullのとき Then Me.Filter bbb>100 End IF のようなものですか。

gonchin01
質問者

お礼

参考までにフォームのプロパティは、 ・レコードソース T_TABLEA ・規定のビュー 帳票フォーム ・ビュー設定 フォーム/データシート です。 T_TABLEAは、1000レコードほどあり、それぞれ一つずつのレコードにたいして、上記のSQL条件文を実施して、該当する数レコードを抽出したい次第です。 不明な点があればまた、よろしくお願い致します。

gonchin01
質問者

補足

ありがとうございます。 (1)Me.Filterはフォームにたいしてです (2) If aaaがnullのとき Then Me.Filter aaa>100 Else bbbがnullのとき Then Me.Filter bbb>100 End IF のようなものです。 まずaaaがnullかどうかの確認が先です。 (aaa>100はSQL条件文のたとえです。) よろしくお願い致します。

関連するQ&A

  • SQL文の書き方

    SQL文の書き方を教えて下さい。 以下の2つのクエリー(1のクエリー&2のクエリー)を1つのクエリーで1度に抽出をかけたいのですがSQL文の書き方がわかりません。 データの発生条件としては TableBのField1は必ずTableAのField1に存在するという条件です。 TableAのField1が「AAA」から「EEE」まである場合は、TableBのField1も必ず「AAA」から「EEE」の範囲内で発生します。 よろしくお願い致します。 1のクエリー ---------------------------------------------------------------- TableA Field1 ---------------------------------------------------------------- AAA AAA AAA BBB BBB CCC DDD DDD EEE EEE EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableA.Field1) as RecCount, TableA.Field1 From TableA 結果 RecCount  Field1 3      AAA 2      BBB 1      CCC 2      DDD 3      EEE ---------------------------------------------------------------- 2のクエリー ---------------------------------------------------------------- TableB Field1 ---------------------------------------------------------------- BBB CCC CCC EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableB.Field1) as RecCount, TableB.Field1 From TableB 結果 RecCount  Field1 1      BBB 2      CCC 1      EEE ---------------------------------------------------------------- 希望する結果 TableAのRecCount TableBのRecCount TableAのField1 3                   AAA 2         1         BBB 1         2         CCC 2                   DDD 3         1         EEE

  • Access2007抽出のことで

    Access2007のクエリ、デザインビューのことです。 データが例えば aaa bbb ccc ddd とあるとして、このうちaaaとcccの2つを抽出しようと 思って「"aaa"and"ccc"」とか書いても データシートビューでは空欄になってしまいます。 条件の書き方がおかしいのでしょうか?

  • AccessからAccessを開く

    Access2003です。 今AAA.mdbのフォームを開いています。このフォーム上にボタン(このボタンの正式名称は分かりません。たしかツールの中に入っていたもの)を貼り付けこのボタンをクリックして新たにBBB.mdbを開く方法を教えて下さい。 尚AAA.mdbもBBB.mdbも同じホルダーにあります。 BBB.mdbに書き込んだ後BBB.mdbを閉じると画面にはAAA.mdbが残っているようにしたいです。

  • すっきりとしたSQL文にしたいのですが

    Oracle9iにてテーブルのデータを更新しようと思っています。 目的としてはAAAのカラムa1とBBBのカラムb1が同一なレコードである場合、 AAAのa2にBBBのb2を更新したいのですが、 <条件> AAA:テーブル1 BBB:テーブル2 a1:CHAR b1:CHAR a2:VERCHAR b2:VERCHAR すべて必須で桁数は10 UPDATE AAA SET AAA.a2 = ( SELECT BBB.b2 FROM BBB WHERE AAA.a1 = BBB.b1) WHERE AAA.a1 = ( SELECT BBB.b1 FROM BBB WHERE AAA.a1 = BBB.b1) ; いまはこんな無駄の多そうなSQLしか分かりません。 この他にも条件が2つ追加される予定なので もっとすっきり更新できる方法を教えていただけませんでしょうか? よろしくお願いします。

  • ACCESSテーブル2つのデータの比較について

    アクセステーブル2つのデータ比較について質問があります、 宜しくお願いいたします。 Access, Excel, VBは初心者レベルです。 TableA,TableBというフォーマットが同じなテーブルがあり、 データが同じかを比較をし、どちらかのテーブルにないエントリーが ある場合はそれを出したいと思います。 途中まで出来たのですが、uniqueではないデータがある為に正確な情報がでません。 具体的には: TableA        | TableB Field1 Field2 | Field1 Field2 AAA 10 | AAA 10 BBB 100 | BBB 100 CCC 200 | CCC 200 CCC 200 | EEE 100 DDD 100 | 希望の答えは Field1 Field2 Field3 CCC 200 NotInB <--- これがでません DDD 100   NotInB  <--- これはだせました EEE 100 NotInA  <--- これもだせました 以下のようなものを書いたのですが、CCCのエントリーがTableBに 一件あるので件数が違うにもかかわらずひけませんでした。 SELECT TableA.*, "NotInB" as Field3 FROM TableA LEFT JOIN TableB ON (TableA.Field1=TableB.Field1) AND (TableA.Field2=TableB.Field2) WHERE TableB.Field1 Is Null; UNION ALL SELECT TableA.*, "NotInB" as Field3 FROM TableA RIGHT JOIN TableB ON (TableA.Field1=TableB.Field1) AND (TableA.Field2=TableB.Field2) WHERE TableA.Field1 Is Null; 一致したらフラグを立てて、再チェックしないようにすればいいのだと思うのですが、アクセスのクエリ、VBなどでどのようにすればできますか?  もしくはアクセスからxlsなどに落としてから、ファイルの状態で比較 (会社で使うので外部ソフト等が使えません) をVBでするといった方法を検討した方がいいのでしょうか? 色々調べてみたのですが、どっちもやり方が分からないので、 それはそもそも出来ないよなどの アドバイスもございましたら、どうぞ宜しくお願いいたします。

  • Access Nullの評価について

    お世話になります。 Access2010 フォームを作成しました。 「登録」ボタンが押されたら、フォーム上の値の変更有無をチェックし 変更がなければ何もせず、変更があった場合のみ該当レコードを更新 します。 そこで質問ですが、  If Me.AAA = Me.BK_AAA And Me.BBB = Me.BK_BBB And Me.CCC = Me.BK_CCC Then    '変更が無ければ何もしない  Else    該当レコードにAAA~CCCの値を上書き  End If としておりますが、例えばMe.CCCとMe.BK_CCCにそれぞれNullが 入っている場合、Elseになってしまいます。 ※M.BK_CCCは変更前の値が入っている 恐らく、  If Me.AAA & "@" = Me.BK_AAA & "@" ・・・ のように文字をくっつけて評価させればよいかと思うのですが、 そもそもNullの場合は、イコールで評価出来ないのでしょうか。 ご教示の程、宜しくお願い致します。

  • Accessの検索フォーム

    またまたAccessについての質問です。 検索フォームというのを作りました。 テーブルのデータから条件に合うものだけを抽出したいのです。 たとえば1つ目の検索フォーム[A]のテキストボックスに「AAA」を入力します。 そのあとBには「BBB」と入力します。 同じくCには「CCC」と入力します。 そして絞込みボタンを押したらAAAでBBBでCCCのものが抽出されます。 これはうまくいきました。 とりあえず、複数条件なので、わけもわからず「&」で結んでしまいました・・・。 ↓は絞込みボタンのクリック時です。↓ 困ったのは、すべて検索条件を指定しない場合です。 たとえば「AAA」で「CCC」のものを抽出したいとき、[A]のテキストボックスに「AAA」と入れ [C]のテキストボックスに「CCC」と入れます。 そして絞込みボタンをクリック。 するとBが未記入だからか、抽出されたのは真っ白でした・・・。 Option Compare Database Private Sub コマンド50_Click() Me.Filter = "契約='" & Me!テキスト51 & "'and A='" & Me!テキスト57 & "'" Me.FilterOn = True End Sub 組み合わせが自由になる検索フォームにするにはどうすればよいのでしょうか? 誰か助けてくださ~い!

  • ACCESS クエリ 抽出条件が多い場合

    ACCESSの超初心者です。 選択クエリで、80件ほどの抽出条件を部分一致で 設定しています。(Likeを使用) 例えばこんな感じです。  フィールド   aaa1   bbb52   aaa33   aac8   bba35   bba115    抽出条件 Like "aaa*" Or Like "bba*" →抽出結果 aaa1,aaa33,bba35,bba115 今後も条件が増えていく予定なので、別の 良い方法がないかと思っています。 (できるかどうかわかりませんが、 別にテーブルを作り、その一覧内の文字が 含まれるレコードのみを抽出) 皆さんのお知恵をお貸しいただけないでしょうか。 宜しくお願いします。

  • access2000のVBAで「直前の操作をキャンセル」

    こんにちわ。 いまaccess2000のVBAでフォームの元になるテーブルへの フィルタ操作をプログラムしています。 1つの条件を与えたときは正常にフィルタできるのですが, 下記のように2つの条件を与えると, 「直前の操作はキャンセルされました」という エラーメッセージが表示されてしまいます。 「 Me.Filter = vbNullString ' クリア Me.Filter = "[項目1]='" & Forms![F_フォーム1].[cmbコンボ1] & "'" Me.Filter = Me.Filter & " AND [項目2]='" & Forms![F_フォーム1].[cmbコンボ2] & "'" Me.FilterOn = True 」 何かコーディングが足りないのでしょうか? 教えてください。お願いします。

  • yahooメールで、「あるアカウントを経由したメール」という条件でフィルタを設定したい

    yahooメールに、aaa@aaa.aaaというメールアドレスに来たメールを転送しています。 その際に、メールのToとかCCとかに aaa@aaa.aaa が入っていればきちんと振り分けてくれるのですが、 来るスパムメールの多くはToに aaa@aaa.aaa と書いていないので、思うようにフィルタできていません。 「aaa@aaa.aaa のメールアドレスを経由して届いたメール」という条件で、フィルタを設定することはできないでしょうか。 なお、スパムフィルタは使いたくありません。 よろしくお願いします。