• 締切済み

MSアクセスの表形式で、ボタンをクリック→データを抽出させるには‥

MSアクセスを使い、データを表形式で表示させています。 同じ日付のレコードが沢山あるのですが、本日分のみを表形式で一覧表示させるにはどうすればよいでしょうか。 また、例えばボタンをクリックすれば、表の中身だけが入れ替わり、 翌日分が表示される、という風にするにはどうすればよいでしょうか。 今はテーブルからクエリで本日分だけ抽出し、それを表示させているのですが、 前日、前々日、3日前‥と遡ろうとするとその分だけクエリを作成しないといけないので、 何かやり方が間違っていると思いますので‥。 ご教授のほど、よろしくお願いします。

みんなの回答

回答No.4

こんにちは フォームのFilterプロパティを利用するとうまくいくと思います。 ・フォームのRecodeSouceに該当テーブルを指定する ・フォームのFilterに抽出条件を設定する ・フォームのFilterOnをTrueにする 本日分表示のためのボタンクリックイベントに Me.Filter = "HIZUKE = '" & Date & "'" Me.FilterOn = True 前日分表示のためのボタンクリックイベントに Me.Filter = "HIZUKE = '" & DateAdd("d", -1, Date) & "'" Me.FilterOn = True このままだとフォーム表示の際、テーブルの全レコードが表示されます。 最初から本日分を表示するならフォームロードイベントに本日分のFilter設定を行ってください。

noname#140971
noname#140971
回答No.3

少し、質問文を私なりに整理してみました。 <TEST> ID__日付___________DATA_1__DATA_2 1___2007/06/15__1A_1_____2A_1 2___2007/06/16__1A_2______2A_2 3___2007/06/16__1A_3______2A_3 4___2007/06/17__1A_4______2A_4 5___2007/06/17__1A_5______2A_5 これを、レコード移動ボタンを持たない帳票フォームに本日分を表示するようにしています。 しかし、これでは常に本日分しか表示されないので困っています。 そこで、表示[対象日]を配置しボタンで更新し、それにフォームを連動させようと考えています。 ・フォームヘッダーに抽出・表示する日付を示す[対象日]を配置。 ・その横に[→][←]の[cmdNextDay][cmdPreviousDay]というコマンドボタンも配置。 この辺りまでは考えつきましたが、以下の点が不明です。 1、フォーム起動時、[対象日]を本日に設定する方法。 2、フォーム起動時、[対象日]に対応したデータを表示する方法。 3、[対象日]が変更されたら、それに応じて再表示する方法。 さて、これだけのことですと、実は8行程度のVBAコードを書けば実現できます。 Option Compare Database Option Explicit Private Sub cmdNextDay_Click()   Me.対象日 = Me.対象日 + 1   UpdateRecordSource Me.対象日 End Sub Private Sub cmdPreviousDay_Click()   Me.対象日 = Me.対象日 - 1   UpdateRecordSource Me.対象日 End Sub Private Sub Form_Load()   Me.対象日 = Date   Me.RecordSource = "SELECT * FROM TEST WHERE 日付=#" & Date & "#;" End Sub Public Sub UpdateRecordSource(ByVal NewDay As Date)   Me.RecordSource = "SELECT * FROM TEST WHERE 日付=#" & NewDay & "#;"   Me.Requery End Sub さて、クエリを使い、かつ、VBA のコードを最小にするには一体どういう手を使ったらいいのでしょうか? ******************************************* Option Compare Database Option Explicit Private Sub cmdNextDay_Click()   Me.対象日 = Me.対象日 + 1   Me.Requery End Sub Private Sub cmdPreviousDay_Click()   Me.対象日 = Me.対象日 - 1   Me.Requery End Sub ******************************************* Me.対象日の既定値を利用して日付を設定すれば VBA コードは不要です。 ですから、書くべきコードは僅か4行。 クエリがフォームに配置されている[対象日]を参照している訳ですからリクエリすればOKという訳です。 つまり、No2 の回答が全てですよ。 <アドバイス> **** と **** との間の仕掛けをしてから、No2 さんの回答に従ってクエリを改造してみて下さい。 そして、上手くいかなかったら、そのクエりを[SQLビュー]モードで表示し、それを回答者に示して下さい。 そうすれば、一発で解決します。

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> ボタンをクリックすれば、表の中身だけが入れ替わり、翌日分が表示される そのボタンが設置されているフォームの名前を「フォーム1」とし、日付を入力する テキストボックスとして『対象日』を新設したとすると、クエリの日付フィールドの 抽出条件を以下のようにすればよいと思います; Forms!フォーム1!対象日

ipaqueet
質問者

補足

説明不足で申し訳ありません‥。日を入力して検索、ではなく、クリックで表示、という形でやりたいと思っています。 よろしくお願いします。アドバイスありがとうございます。

  • mame9999
  • ベストアンサー率44% (90/203)
回答No.1

クエリの抽出条件を書く欄に (= 2007/06/16とか書きますよね) [日付を入れてください] と入れてみてください ([]←を忘れないでくださいね) between [日付FROM] and [日付TO] といれれば、複数連続日を抽出できます 何はともあれ[日付を入れてください]を試して 動きを確認してみてください

ipaqueet
質問者

補足

すみません!説明不足でした! クリックまたはホイールマウスを回す度に次の日または前日が表示されていくようにしたいのです! アドバイスありがとうございました!

関連するQ&A

  • ACCESSクエリの任意のレコードを抽出したい

    初心者ですのでよろしくお願いします。 ACCESS2002で現金出納帳テーブルを作成し、それから科目別のレコードを抽出する選択クエリを作成しました。 (例.交際費クエリ、贈答費クエリ、会議費クエリ等) これらのクエリではVBAで取引レコードごとに残高を算出するようにしています。 期末時点で、これらの科目別クエリの最終残高(一覧表形式の最終行にある残高)をそれぞれ抽出して、別に各科目の期末残高だけをのテーブルかクエリを作成したいのですが、いい方法はありませんでしょうか? よろしくお願いします。

  • Accessでの抽出について

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

  • Access 日付抽出について

    Access2000のクエリにて、ある特定日付の抽出ができません。 テーブルの日付項目は、日付/時刻型です。 テーブルを開くと、「2008/02/01 12:59:00」のように見えます。 クエリで抽出する時に、「#2008/02/01#」で抽出されると思って いるのですが、実行すると抽出できません。 どのようにクエリ設定をすればよろしいでしょうか?

  • Access2007で同月同日を抽出

    ある(*.accdb)のクエリーで日付の所に Like"*/"&Format(date(),"mm/dd") と書いて本日と同じ同月同日を抽出していますが本日ではなく任意の yyyy/mm/ddをあるレコード欄に入力したらその日付の同月同日を抽出するにはクエリーにどの様に書けばよいのか教えてください。

  • Access2013で翌日のデータのみのクエリ

    お世話になります。 Access2013を使用しており、2つの日付フィールドを比較して 翌日のレコードのみ抜き出したい場合のクエリについて質問で ございます。 日付Aフィールド と 日付Bフィールドが あり、それぞれ日付と時刻が書式yyyy/mm/dd hhmmss で格納されております。 このうち、クエリで抽出したいのは、 日付Bフィールドに格納されている、 日付Aフィールドの翌日のレコードのみを 抽出したいです。 その際、時刻(hhmmss)は無視して翌日のレコードを 抽出したいです。 例えば、 日付Aフィールドに 2016/08/24 15:00:00 2016/08/24 16:00:00 2016/08/24 17:00:00 というデータが格納されていて、 日付Bフィールドに 2016/08/25 00:00:00 2016/08/25 17:00:00 2016/08/26 00:00:00 というデータが格納されていた場合、 日付Bフィールドの 2016/08/25 00:00:00 2016/08/25 17:00:00 のみ抽出したいです。 この場合のクエリの設定方法を教えてください。 どうぞ宜しくお願いいたします。

  • Accessの選択クエリから最終日付のデータのみ抽出したい

    Access2002を使用しています。 初心者ですのでよろしくお願いします。 アクセスで選択クエリを作成しました。 このクエリのフィールドは「日付」と「金額」です。 この選択クエリから最終日付のレコードのみを抽出する選択クエリを作製したいのですが、何か方法はありませんでしょうか? 最終日付に対応する金額を抽出したいイメージです。 なお、レコードの作製順番は、必ずしも日付順とはなっていません。(例えば、7/2付でレコードを作成後、7/1付で次のレコードを作製している場合もあります。) 一つの方法として、選択クエリのデザインフォームで集計ボタンを押して日付フィールドの集計項目(グループ化)で「最後」を選択しているのですが、「金額」が全レコード表示されてしまいます。 また、同様にして、金額フィールドの集計項目で「最後」を選択すると、最後に作成したレコードが表示されてしまいます。(上記の例では、7/2ではなく7/1のレコードが表示されます。7/2に対応する金額を抽出したいのですが…) アドバイスよろしくお願いします。

  • Access 抽出条件

    クエリの抽出条件で特定のレコードを抽出したいのですが 最新の三年分のレコードデータを抽出する場合どのような式にすればよいのでしょうか? テーブルには年月フォームがあり年月が入力されています。

  • ACCESS2007、今日の日付から一か月前のレコードを自動で抽出する

    ACCESS2007、今日の日付から一か月前のレコードを自動で抽出する方法が分かりません。 いろいろと検索してみたのですが、日付指定の検索方法しか分かりませんでした。 Date()をつかうのかなー?って思ったりして試行錯誤もしてみましたが、できませんでした。 形としては以下の通りです。 --------------------------------- =クエリ= [商品] [日付] 鉄アレイ  2007/10/24 タオル   2007/11/05 タワシ   2007/11/25 ユンゲル  2007/12/12 (本日 2007/12/24) ---------------------------------     ↓ ↓ 抽出 ↓ ↓ --------------------------------- =抽出結果=  (抽出結果が表示されるクエリ) タワシ   2007/11/25 ユンゲル  2007/12/12    (抽出期間:本日2007/12/24~一ヶ月前2007/11/24)     月末〆ではなく、本日から丸一ヶ月分を抽出する。 --------------------------------- 一週間の抽出の仕方も知りたいと思います。 よろしくお願いします。

  • アクセス2003 フォームのボタンをクリックしたら空白データを抽出したい

    皆様、お世話になります。 アクセス2003で講習会受講管理をしたいと考えています。 クエリには[氏名][所属][受講日]があります。 このクエリを元にフォーム(一覧表形式)を作りました。 このフォームにコマンドボタンを配置して、コマンドボタンをクリックしたら[受講日]が空白のデータのみフォームで表示したいのですが、どのようにしたらいいのでしょうか。 教えて下さい。

  • アクセスのデータ抽出

    現在テーブルA(支店コード、支店名、郵便番号、住所)とテーブルB(支店コード、社員番号、商品Aの売上数、商品Bの売上数・・・※商品名ごとにレコードを持っています。)の2つのテーブルを使っています。 これをクエリで抽出しているのですが、社員一人につきひとつのレコードしか抽出されません。 売上のない支店も全て抽出し、実績報告書として印刷するため、テーブルAとBに結合のプロパティでテーブルAの全てを選んでいるため、これ以外の方法でテーブルBのデータ全てを抽出したいのですが、何か方法はありますか?