• ベストアンサー

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

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

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

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

viva123
質問者

補足

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

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

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

viva123
質問者

お礼

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

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

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

viva123
質問者

補足

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

noname#140971
noname#140971
回答No.1

売上明細: 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です。 ただし、もしかしたら、ネットワークが混雑しないのは後者かもです。

viva123
質問者

お礼

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

関連するQ&A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • accessでパラメータをフォームで指定しテーブルを作成する方法

    ACCESSでFORMをつくり、そこで条件指定(パラメータ指定)してテーブルを作成しようとしています。 実際は2本のテーブル顧客テーブル・売上明細テーブル両方をクエリで関連づけ、そのクエリに抽出条件を入れれば良いと思うのですがうまくいきません。どのように設定したらいいのでしょうか? 条件は売上日付が xxxx~xxxx という期間指定でさらに(必須) 商品分類が YY で区分が zz のもの という条件をFORMで入れるように設定しています 分類と区分は指定無でも可です どうぞよろしくお願いします!