• ベストアンサー
  • 困ってます

ACCESSで複数条件でデータ抽出するフォームの作成

ACCESS2000で複数の条件を入力し、該当するデータを抽出するフォームを作成しています。どんな方法がありますか?簡単に出来る方法をお教えください。 具体的には、売上明細データを検索します。あらかじめ テーブル:売上明細データ をいろいろなマスタを参照している クエリ:売上明細クエリ を元に抽出します 条件は売上日付の日付1と日付2の項目と、伝票区分の項目です。 フォームの頭にテキストボックスを3つ作成し、日付1~日付2までの売上日付で 入力された伝票区分のもののみを表示させたいのです。 検索というコンボボタンを配置し、クリック時にその下にクエリからの必要な表示項目を売上明細クエリから配置しています。 抽出する方法(条件の与え方)を教えてください。よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数3071
  • ありがとう数3

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

  • ベストアンサー
  • 回答No.2

クエリの日付抽出条件欄に Between Nz(Forms!フォーム名!日付1,#1900/1/1#) and Nz(Forms!フォーム名!日付2,#2900/12/31#) 伝票区分の抽出条件欄に =Forms!フォーム名!伝票区分 or Forms!フォーム名!伝票区分 is null ボタンでフォームを再クエリします

共感・感謝の気持ちを伝えよう!

質問者からの補足

実際記述していただいたとおり設定をしたところ抽出できました! 本当にありがとうございます。 ところで次の問題がでてきました。検索ボタンと検索解除ボタンを設定しているのです。クエリで条件指定した場合、その条件の取り消しはどうすればよいのでしょうか。マクロの全レコードの表示も効かないし、マクロでフォームの日付1・日付2・伝票区分に値は代入できませんよね。どうすれば条件解除できるのでしょうか?重ね重ねよろしくお願いいたします!すみません初歩的な質問で・・・

関連するQ&A

  • ACCESS のフォームの内容をクエリーの抽出条件にするには?

    Windows2000,Access2000です。 Accessのクエリーでデータを選択して表示する作業をしています。 現在はクエリーを自分で修正して実行しています。 でもそれではみんなで使うには使いづらいので、 フォームを作成しそのフォーム上の入力項目に入力された データをクエリーの抽出条件に指定する様にしようという事になりました。 フォーム上の入力フィールドの内容をクエリーの抽出条件に設定する方法はすぐわかりました。 でも「like」を指定する方法がわかりません。 つまりフォーム上の入力データを“xxx”とした時、クエリーの抽出条件を 「like "*xxx*"」としてクエリーを実行したいのです。 つたない文章でわかりにくいかと思いますが、ご存じの方おりましたら、 よろしくご教示ください。

  • accessでの複数条件での検索について

    現在accessで売上管理を作成しています。 T_一覧には売上日付、担当者、品名、金額、入力者、入力日付のデータが格納されています。 F_一覧は、T_一覧を基に、すべてのデータが閲覧できるフォームです。 ヘッダー部分に、売上日付、担当者、入力者、入力日付のテキストボックスを配置し、「検索」コマンドボタンを押下すると、検索したい条件に一致するデータのみが表示されるようにしたいです。 現在は担当者と入力者に検索したい値を入力し、「検索」ボタンを押下すると、条件に合ったデータのみが表示されるのですが、売上日付と入力日付に検索したい日付を入力しても、なにも検索できません。 担当者と入力者はQ_検索をT_一覧より作成し、抽出条件にLikeを使っています。 日付はどのように抽出条件にかけばよいのでしょうか?

  • Accessクエリの抽出条件にフォームから挿入する方法(2)

    フォームにいくつかの抽出条件を指定するためのテキストボックスをセットし、そこに入力されたデータをクエリの抽出条件に挿入しデータ抽出を行っておりますが、たとえば販売期間でデータを抽出するために、クエリの抽出条件に Between [Forms]![フォーム名]![売上日FROM] And [Forms]![フォーム名]![売上日TO]と入力しているのですが、テキストボックスに指定日付が入っていれば問題なく抽出できるのですが、販売期間の指定なしの場合、売上日from及び売上日TOがNULLとなるためか抽出結果がゼロ件になってしまいます。 期間指定なしの場合でも抽出ができるようにするためにはどのように記述すればよいか教えてください。よろしくお願いいたします。

その他の回答 (3)

  • 回答No.4

>Forms!フォーム名!日付1 is Null これを代入したのですか? これの値は日付1に何か入っているときにはFalseです そうじゃなくNullを代入するのですよ

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。少し勘違いしていたようです・・・ 無事解決しました。出来の悪い質問者ですみません! 本当にありがとうございました!これからもよろしくお願いいたします!

  • 回答No.3

>マクロでフォームの日付1・日付2・伝票区分に値は代入できませんよね。 値じゃなくNullを代入してから再クエリします

共感・感謝の気持ちを伝えよう!

質問者からの補足

もちろんNullを代入して再クエリをかけましたが解除できませんでした・・・ マクロのアクションの値の代入で Forms!フォーム名!日付1 is Null で同じく日付2、伝票区分を設定しました。その後再クエリをかけました。違うのでしょうか?重ねてすみません・・・

  • 回答No.1
noname#140971

売上明細: ID___売上日付______明細区分___伝票番号 1____2007/10/25_____________0___2007100001 2____2007/10/26_____________0___2007100002 3____2007/10/27_____________1___2007100003 売上明細 クエリ: SELECT Month([売上日付]) AS 月次, * FROM 売上明細 WHERE (((Month([売上日付]))=10)); Private Sub コマンド_抽出実行_Click()   Dim dteSHiduke As Date   Dim dteEHiduke As Date   Dim intKubun  As Integer   Dim strWhere  As String      dteSHiduke = Nz(Me.抽出開始日, "1999/12/31")   dteEHiduke = Nz(Me.抽出終了日, "1999/01/01")   intKubun = NZ(Me.抽出区分, 0)   If dteSHiduke <= dteEHiduke Then     strWhere = "明細区分=" & intKubun & _           " AND 売上日付>=#" & dteSHiduke & "# AND 売上日付<=#" & dteEHiduke & "#"     Me.RecordSource = "SELECT * FROM [売上明細 クエリ] WHERE " & strWhere     Me.Requery   Else     MsgBox "抽出する日付が定かではありませんので中止します!"   End If End Sub   ・・・・・   If dteSHiduke <= dteEHiduke Then     Me.FilterOn = False     Me.Filter = "明細区分=" & intKubun & _           " AND 売上日付 BETWEEN #" & dteSHiduke & "# AND #" & dteEHiduke & "#"     Me.FilterOn = True   Else   ・・・・・ どっちでもOKです。 ただし、もしかしたら、ネットワークが混雑しないのは後者かもです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

いつもご丁寧な回答ありがとうございます!! 只今VBA特訓中で、とっても参考になりました。Private Sub以降の記述を何とか読解中です!でもSQLがまだこれからと言うところなので、十分に理解が出来てはいませんが、少しつかめてきたと思います。本当に詳しく解説いただき感謝感激です!これからもよろしくお願いします!

関連するQ&A

  • ACCESS クエリの抽出条件で全てを抽出したい

    初歩的な質問で申し訳ありません。 売上入力フォームのオプショングループに配置した3つのトグルスイッチによって、クエリからデータを抽出したいのですが、 オプション値1 全て  オプション値2 現場 オプション値3 得意先 IIf([Forms]![F_売上入力]![fr_2]=2,"現場",IIf([Forms]![F_売上入力]![fr_2]=3,"得意先","*")) と抽出条件に入力しましたが、全てのみ上手くいきません。単純なミスとは思うのですが、どうしても出来なくて。。。他に全てを表示させる方法等ありましたら、是非、お知恵を貸して下さい。

  • Accessで検索フォームを作成したい。

    Access2000でDBをつくりました。 そのデータから検索をして、抽出をしたいのです。 検索条件をいれるデータはこれ、と決まっていればパラメータークエリでもつくればいいのですが、どれでも検索条件にするようにしたい、と使用者から頼まれました。 入力方法としては単票フォームを開き、検索したい項目に、検索条件をいれると抽出される、というようなものです。 検索したい項目は日付かもしれないし、名前かもしれない、はたまた会社名かもしれない、とバラバラなのです。 その項目毎にパラメータクエリをつくるのもちょっと・・・と思うので。 何かいい方法はありますでしょうか? よろしくお願いします。

  • access2003 抽出条件が持ち越されてしまう

    http://okwave.jp/qa3580875.html ↑にて質問させていただいた者です。  一部繰り返しになりますが、2000種ほどの商品を扱っています。伝票を見ながらフォームから直接売上入力を行いたく思います。 ◆親)売上入力フォーム:売上管理番号/日付/取引先/取引先伝票番号/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付/取引先伝票番号 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 子フォームで商品コードのフィルターとして、 1)親フォームで選択した取引先の商品のみ→[Forms]![売上入力フォーム]![取引先]を導入 2)ワイルドカード「Like "*" & [商品コードの一部を入力] & "*"」 のふたつを使っていますが、うまく動作してくれません。 いったん商品コードを選択すると、明細の次の行に移動しても取引先選択のポップアップが出ず、コンボボックスには同じ選択肢が提示されます。さらに、新しいレコードに移動してもポップアップなし&同じ選択肢が続きます。 この状態を回避する方法を教えてください。 長くなりましたが、どうぞよろしくお願いします。

  • access2003 複数のフォームから入力したデータに通し番号を付けてストックしたい

    初心者の恥ずかしい質問かもしれないので申し訳ありませんが、自力で解決できないのでアドバイスをお願いします。 伝票入力画面を作っています。  ◆親)売上入力フォーム:売上管理番号/日付/取引先/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 伝票が数種類あるため、それぞれの伝票を画像として取り込んで複数の入力画面を作り、入力しやすくしようと思っています。 このとき、各フォームから入力したデータを、オートナンバーでひとつの売上入力/明細テーブルにストックしていくにはどうしたらよいでしょうか? よろしくお願いします。

  • ACCESS2010テキストボックス値を抽出条件に

    ACCESS2010にて、フォームに作ったテキストボックスの入力値(数字3桁)をクエリの抽出条件にしたいと考えています。 ただ、そのテキストボックスの数が30個の為、クエリデザイン画面の抽出条件欄にorを用いた条件式で設定することが出来ませんでした。(文字数上限超?) そこで、VBAを用いて抽出条件を設定しようと考えているのですが、初心者のため全く勝手が分かりません。VBAでの設定方法やVBA以外での抽出方法があれば教えて頂けないでしょうか。 尚、テキストボックスには商品コード(数字3桁)を入力し、売上データを集計したクエリにおいて、フォームのテキストボックスに入力された複数の商品コードを抽出条件に設定したいと考えております。 以上、どうかお願い致します。

  • クエリ抽出条件を動的に変更したい

    Win XP Access2003 顧客情報を入力するメインフォーム1に商品明細を入力するサブフォーム(帳票)のある 伝票作成用のフォームを作っています。 (サブフォームは選択クエリが元になっています) 入力用にはフォーム1を使い、その後確定した伝票はメインフォーム2で扱いたいのです。 商品明細(帳票サブフォーム)の内容は同じなので、クエリの伝票番号(フィールド)の 抽出条件を フォーム1で開いた時に[forms]![フォーム1]![txt伝票番号] フォーム2で開いた時は[forms]![フォーム2]![txt伝票番号] の様に動的に変更したいのですが,よい方法がありましたら宜しくお願い致します。

  • DataGridViewで複数条件の抽出の仕方

    よろしくお願いします。 開発環境は、VB2005、WinXPです。 フォーム上のDataGridViewに日付範囲+取引先名を検索条件にしてレコードを抽出したいのですが、どのようにすればよいでしょうか? データテーブルには、日付、伝票番号(主キー)、取引先名、金額があります。参考書に、コンポーネントトレイのBindingSourceコンポーネントから「データー」、「クエリの追加」、「検索条件ビルダ」というのがあったのですが、複数条件の抽出法がわかりません。特に日付範囲の抽出をどうすればよいのかわからないので教えてください。 ちなみにBindingSourceの右上に出るはずの三角印みたいなのが出ないので上記の「データー」、「クエリの追加」というのに進めないのですが何か原因があるのでしょうか?「検索条件ビルダ」の起動方法が他にあるのでしょうか? よろしくお願いします。

  • AccessでBetween条件を含むクエリーで、Between条件を

    AccessでBetween条件を含むクエリーで、Between条件を入力しなくてもデータを抽出するには? Access97でデータの抽出を行いたいと思います。 「顧客名」「商品名」「出荷日」という項目を含むクエリーから、希望のデータを抽出するフォーム(名:検索フォーム)を作成しています。 検索フォームにそれぞれ「顧客名」「商品名」「出荷開始」「出荷終了」という名前の非連結のテキストボックスを作り(規定値を"*"にしています)、それに値を入力すると、これらのテキストボックスの下に配置したサブフォームに抽出されたデータが抽出される様にしたいのです。 現在、クエリーの「顧客名」項目の抽出条件に「[forms]![検索フォーム]![顧客名]」という様に入力し、同じ様な記述を「商品名」項目にも行い(条件は[商品名]としています)、出荷日に「Between[forms]![検索フォーム]![出荷開始]And[forms]![検索フォーム]![出荷終了]」と記述しています。(これらは全てAnd条件にしています) さて、この検索フォームの値入力項目で、全てのテキストボックスに入力しなくても(1つ以上値が入力されていれば)データをサブフォームに抽出できるようにしたいのです。 現在、「出荷開始」&「出荷終了」に値を入力すれば、その他の値(「顧客名」と「商品名」)を入力してもしなくてもデータが抽出できますが、「出荷開始」&「出荷終了」を入力しない限りデータが抽出されません。 この「出荷開始」&「出荷終了」を入力しないケースでもデータが抽出できる様なフォームを作成したいのですが、 どの様に記述を変えたらよいでしょうか?

  • Accessでの抽出について

    Accessでのクエリーでの抽出の方法を教えてください。 たとえば「12345678」といったIDをもたせた人のデータが日付ごとにいくつかレコードがある場合に、クエリーのID欄の抽出条件欄には、「12345678」と入力すれば、その人のデータのみが表示されると思います。 そこで、 (1)その中の日付から、最新のものから3つを抽出したい場合。 (2)その中の日付から、2番目に新しいものを抽出したい場合。 において、クエリーの抽出条件になんて書いたらよいのでしょうか? できましたら、(1)(2)それぞれお答えいただければ幸いです。 どうぞよろしくお願いいたします。

  • フォームのテキストボックスで抽出したい

    データベース一覧の抽出条件として、フォームのテキストボックスを使用することができるのでしょうか?もし、でしるのでしたら、抽出条件の入力方法を教えて下さい。具体的にいうと、「名前」「住所」「入社年月日」のフィールドを持つ「名簿」テーブルがあります。次に抽出クエリ「Q_抽出名簿」を作成し、入社年月日が未入力のもののみを抽出させました。この「抽出名簿」をベースにして、フォーム「F_抽出名簿」を作成しました。このフォームを開き、「入社年月日」テキストボックスに新しく日付が入力されたもののみクエリで抽出したいのです。わかりにくい箇所は補足説明しますので、是非、教えて下さい。