• ベストアンサー

Accessのフォームで期間指定したいのですが。

すみません教えてください。 元になるデータクエリの"QA"の中で、受付期間を毎月21日-翌月20日間でのデータを出して、その"QA"のデータから抽出条件をつけたクエリが"Q1"、"Q2"、"Q3"とあります。 元になるデータをパラメータクエリにしてみたのですが、"Q1"から"Q3"のクエリもパラメータになって聞いてくるので面倒なので元データの"QA"の期間指定を一回して、保存するフォームを作りたいなと考えています。 というかそうゆうことってできますか? ただ思っているだけなのでできるのかなと思います。 それと、期間指定のときに毎月21-翌月20と決まっているので、できれば月だけを指定するような形にしたいと思ってるのですが、それはどうでしょうか? 初心者ですみません。なにとぞご鞭撻いただきたくよろしお願いいたします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

フォームにテキストボックスを作りDate0とします。 そのDate0に月数を入力するようにします。 >毎月21日・・を求める場合 CVDate(Year(Date()) & "/" & [Date0] & "/" & "21") でDate0に7を入力すると03/07/21が得られます。 >翌月20日・・を求める場合 DateAdd("d",-1,DateAdd("m",+1,CVDate(Year(Date()) & "/" & [Date0] & "/" & "21"))) で翌月の03/08/20が得られます。 フォーム上に表示したい場合はテキストボックスDate1とDate2を作りDate1のプロパティのデータのレコードソースに =CVDate(Year(Date()) & "/" & [Date0] & "/" & "21") Date2のレコードソースに DateAdd("d",-1,DateAdd("m",+1,[Date1])) で表示できます。 クエリなどの抽出条件でBetweenを使うのなら Between CVDate(Year(Date()) & "/" & [Date0] & "/" & "21") And DateAdd("d",-1,DateAdd("m",+1,CVDate(Year(Date()) & "/" & [Date0] & "/" & "21"))) もしくはフォーム上のDate1とDate2に表示された値を使うのであれば Between フォーム名![Date1] And フォーム名![Date2] にすれば出来ます。

totis
質問者

お礼

O_cyanさん。 初心者の私にもとってもわかりやすく教えていただきありがとうございます。 本当に助かりました。勉強になります。また、何かありましたらよろしくお願いいたします。感謝!!!。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • raly-raly
  • ベストアンサー率29% (24/82)
回答No.1

こんにちは。 クエリの抽出条件を動的に変えたい、とかそういうことですよね? やり方の概要としては、フォームにパラメータを入れるテキストボックス貼り付けて、そこに入力された値をもとにクエリのSQLを書き換えるプロシージャをつくる、だと思うのですが。 もっと簡単なやり方があるのかもしれませんが、何か複雑なことに発展しようとしているなら、VBA・SQL・DAOをキーワードに調べてみては、と思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクセス メインフォームの条件指定にてサブフォームを表示

    アクセス初心者です。 現在アクセス2000、MEにてシステム作成中です。 業務報告書を作っています。 メインフォームに2つのタブを作成。 1つのタブに3種類のサブフォーム(別々のクエリ)を表示しています。 現在は全てのデータ件数を表示していますが、これを期間指定して、その期間だけの件数を表示させるようにしたいのです。 今まで試してみた結果です。 考え方(1)パラメータとして入力  各クエリにbetweenパラメータとして入力  ⇒これは、3つのクエリ×2があるので入力を促す同じ処理が何回も表示され、とても使えませんでした。 考え方(2)メインフォームに非連結テキストボックスを作成して、それを参照  ⇒まず、終了年月日のイベント(更新後処理)にサブフォームを再クエリ(サブフォームのクエリには、メインフォームの開始と終了範囲をbetweenにて抽出)   ⇒⇒すると、そのままでは表示されず、デザインビューの切り替えなどを行うと表示されます。 そのために、マクロ(再クエリの後)に「オブジェクトの再描画」でこのサブフォームを再表示するようにしましたが、結果は同じです。 現在このような状態です。 マクロは分りますが、VBAはほとんど分らない状態です。 質問1 パラメータ指定の場合、各クエリに1回のパラメータを伝えられる方法があるのでしょうか? 質問2 再クエリしたこのデータをきちんと表示する方法は? どんな操作方法が良いのかはわかりません。 他に簡単でわかりやすい方法があれば、教えてください。どなたかよろしくおねがいします。 また、同じようにレポートも出力します。 同様の形式です。こちらも変更の予定です。 ですから、そのことを考えると、1回のパラメータで各クエリに伝えられるのがいいのですが・・・

  • ACCESSで、メインフォームとサブフォームがあるとき・・・

    Accessで、メインフォームとサブフォームがあり、メ インフォームのテキストボックスで期間を指定し、再 クエリを行うマクロボタンでサブフォーム上に期間指 定したデータのみが表示されるようにしています。 また、Access起動時に開くフォームがあり、そのフォ ームに、先ほど上述したメインフォームが開くマクロ ボタンを作成したところ、パラメータの入力画面が出 てきてしまいました。 恐らく、サブフォームの抽出用のクエリに設定してあ るものだと思いますが、これが表示されないようにす ることは出来ないのでしょうか?

  • アクセス97のVBAでパラメータを指定する方法

    いつもたいへんお世話になっております。 アクセス97で、フォームを複数作りました。フォーム1、フォーム2、フォーム3。 それぞれのフォームのコマンドボタンでフォーム4を呼び出します。 フォーム4のレコードソースにクエリを使用しますが(クエリ1)、 このクエリにの抽出条件に、最初のフォームのコントロールの値(部門)を設定したいのですが、抽出条件に、「FORMS!フォーム1!部門」とすると、同じクエリを他のフォームには使えませんよね?パラメータを作成して、それぞれのフォームのコマンドボタンのなかで指定できてしまえば、クエリ1と、フォーム4を共有できますよね。現在は、それぞれのフォームに対応するフォーム4とクエリ1を作成しています。なんとかなりませんか? 説明が難しくなってきちゃった・・・ ・・・パラメータの入力要求をVBAで処理したいのですが、いい方法を教えてください。

  • ACCESS フォームに自動連番をふる

    Accessでテーブル→クエリ→フォームと作成し、フォームから特定条件を指定して データを抽出しました。 その抽出したデータに自動連番をつける方法を教えてください。

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

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

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

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

  • Accessのパラメータクエリについて

    Accessのパラメータクエリがうまく動かなくて困ってます。 実はODBC経由でリンクテーブルを作っておりまして、そこからパラメータクエリで抽出を試みたのですが、パラメータは聞いてきますが抽出できません。 選択クエリ状態で直接抽出条件を入れてやれば何の問題もなく通常のテーブルと同様に抽出できるのですが、パラメータクエリにする、または同じ事ですが他のフォームのコントロールを参照させる状態ですと、エラーも出ずにノンデータとなります。 これって何故なんでしょうか?対処方法はありますか? ちなみにリンク元のテーブルはオラクルですがデータ型とかが関係あるのでしょうか?

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • フォームでパラメーターを求められます

    フォームにコンボボックスを作りました。 コンボボックス(年指定)の中は、 2005 2006 2007 ・・・・・・・・・・・ といったような年度の位置づけです。 さらにコマンドボタンを作ってクリック時にマクロを指定しました。 マクロには、 アクションが「クエリを開く」があり、 クエリは普通の選択クエリで、 実績年フィールドの抽出条件に、 =[Forms]![フォーム1]![年指定]としました。 これでコンボボックスで選んだ年度のデータが抽出されて表示されるのかと思っておるのですが、 コマンドボタンを押すと、 パラメーターの入力を聞いてきます。(Forms!フォーム1!年指定) どこが間違っているのでしょうか? 情報不足かもしれませんが、ご指導ください。

  • access2000 フォーム上での期間指定

    Access2000超初心者です。 お願い致します。 フォーム上で日付の期間指定をし、担当者の名前を入力するとその担当者の項目(メインテーブルに保存している何月何日の交通費やガソリン費)を抽出できるようにし、レコードをクリックすると詳細(サブテーブルに保存しているその日の行動)を抽出したいのですが、まず何からしたらいいのか見当がつきません。 説明がわかりにくいとは思いますが何卒宜しくお願い致します