• ベストアンサー

年月日を持つテーブルから年月を指定して抽出したいのですが

ACCESSをつかっています。 年月日、氏名、その他のレコードを持つテーブルがあります。 フォーム、レコードで検索条件のコンボボックスがあるとします。 条件で、2002年4月を選ぶと、2002/04/01~2002/04/30 までのデータを出せるようにしたいのです。 他の質問にあるあいまい検索等を参考にしましたが、コンボボックス と、テーブル、フォームの関係が頭の中でごちゃごちゃになって つながりません。最終的にはフォームの上部にコンボボックスがあり、 下部(サブフォームでしょうか)に抽出されたデータがでればと 思っています。なにぶん初心者なもので質問自体もわかりにくいと 思いますがよろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 コンボボックス(cbo年月)のリストデータは、"2002年4月"のように日付で認識出来る文字列とします。 コンボボックスのClickイベントまたはChangeイベントに次のように書きます。 Dim startYM As Date Dim endYM As Date Dim myFilter As String If Me!cbo年月.Value = "" Then   '未選択   Exit Sub End If '年月だけだと"○○○○/△△/1"と1日を返す startYM = CDate(Me!cbo年月.Value) '1ヶ月後の前日(つまり今月の末日)を返す endYM = DateAdd("m", 1, startYM) - 1 'フィルタに設定する抽出条件文字列を作る myFilter = "年月日 BETWEEN #" & startYM & "# AND #" & endYM & "#" 'フォームにフィルタをかける Me.Filter = myFilter Me.FilterOn = True 関数などの詳細はヘルプを参照して下さい。 では。

ichiro-ichiro
質問者

お礼

どうもありがとうございます。なるほど、という答えでした。 まだ完全にはできていませんが、とてもよいヒントとなり、 もう少しでできそうです。頑張ってみます。

その他の回答 (1)

  • yohkah
  • ベストアンサー率53% (46/86)
回答No.2

月単位で良いのならACCESSではmonth関数が使えますから、 where month(年月日)=4 と言うような検索式を設定すればOKでしょう。もし年号が必要ならandでyear関数を追加すれば絞れますね。 当然コンボボックス内の条件「2002年4月」から年号と月のデータ抽出はする必要が有りますが。

ichiro-ichiro
質問者

お礼

ありがとうございました。ヒントになりましたので頑張って やってみます。

関連するQ&A

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • フォームを、開いてから開くテーブルを指定

    アクセスです。 開きたいテーブルが、6つあります。 フォームを、開いてから検索対象にするテーブルを指定したいのですが可能でしょうか? 指定方法は、チェックボタン等のオプションボタンか コンボボックスで、指定して対象テーブルを開き前回と同じ条件で検索したいと思っています。 初心者では、無理でしょうか? 宜しくお願いします。

  • ACCESS コンボボックスで選択した項目の内容をクエリで抽出

    今フォームの中にサブフォーム(クエリ)を入れようと思っているのですが、なかなかできません。 ・フォームを開く ・フォームのコンボボックスでテーブルの内容を選択 ・その内容をクエリで検索し抽出 ・そのクエリをサブフォームに表示

  • データシート(サブフォーム)の複数条件抽出について。

    データシート(サブフォーム)の複数条件抽出について。 現在メインフォーム上に、オートフォーム:データシート(基となるテーブル(マスターA)選択) をサブフォームとして置き、メインフォーム上にコンボボックス2個(コンボ1、コンボ2)&コマンドボタン1個設置してあります。 基テーブル(マスターA)には 種類    サイズ    商品名 の3フィールドがあります。 やりたい事は、コンボ1(対応フィールド:種類)及びコンボ2(対応フィールド:サイズ)で選択し コマンドボタンを押下で、サブフォーム内データの抽出です。 まだACCESSを始めたばかりの未熟者のため、ネットや本で調べながらやっているのですが どうしても上記がわからなくて完全に進行ストップしてしまったので ご教授願いたいと思い質問させて頂きました。 Filterをかけ、条件はANDで繋げば良いとは思うのですが どのようにコードを組み上げれば良いのか調べつかないため 何卒ご教授の程宜しくお願い致します。 また、質問させて頂いている間も引き続き自分で調べながら やっていこうと思います。

  • フォームでの検索

    コンボボックスでの検索が出来なくて困っています。 テーブル:職員名簿   氏・名・職員No・生年月日・所属部署・・・etc. ↑のテーブルを元に入力フォームを作りました(単表形式)。 で、名簿の訂正や変更を行う時の為に検索でレコードを出したいです。 コンボボックス1:氏 コンボボックス2:名 を作って検索出来るようにしたのですが、氏・名 両方が当てはまるレコードを出したいのに、片方ずつの検索しか出来ません。 いろいろ調べてみて「コンボボックスの連携」というのをすると出来るようなのですが(?)、やり方がわかりません。 超初心者なので1から教えていただけるとうれしいです。 氏・名からの検索でレコードが出せれば良いのでもっと他に簡単に出来る方法があればそれでも良いです。 よろしくお願いします。

  • アクセス2000でデータ抽出できない

    アクセス2000でデータ抽出できない サブフォーム上でコンボリストを使用して入力し、その条件にあったものだけを別のコンボボックスに表示したい。 フォーム:[取引名][種別][資材名] ※全てコンボリスト 取引先を選択し、種別を選択し、その2つの条件を満たすものだけテーブルから抽出し、資材名のリストに表示したいのですが、どうしたらできるかわかりません。

  • コンボボックスからのデータ抽出

    Access2000です。 hozon - テーブル コンボボックス-nenn(2003,2004) コンボボックス-tsuki(1月から12月) コンボボックス-hi(1日~31日) コマンドボタン-抽出ボタン があり、各コンボボックスで抽出したい年月日を選択してコマンド抽出ボタンをクリックして その下にサブフォームにてテーブルから抽出したデータを表示したいのですが、どのようなコードになるのか教えてくださいませんか? データは月別の場合と日にちべつの場合とできればうれしいのですが、、 初心者なのでよろしくお願いします。

  • Access2000の件です。

    OSがWIN98で、Access2000をやってます。 1)カレンダーコントロールで選択した日付のデータを、 2)テーブルから抜き出して、サブフォームで表示し、 3)コマンドボタンで新しいレコードの追加を行い、 4)追加したレコードに、年月日+通し番号の識別IDのみを   デフォルトで与え、その通し番号を、テキストBoxに、   表示させようとしています。 私なりの作業 1)カレンダーにクリック時のイベントが無かったので、   年月日という名のテーブルに、現在選択されている   日付を代入するマクロを、コマンドボタンのイベントにしました。 2)クエリを作り、抽出条件に   ≪[年月日]![年月日]≫が日付と等しい、にしたフォームを   作り、サブフォームに設定しました。 ところが、この時点で、サブフォームに検索されません。 前回終了時に年月日テーブルに保存された日付でしか、 検索されません。 いろいろ考えてましたので、各コントロールの設定も、 かなりいじってます。 ひょっとしたら簡単なことなのかも、しれません。 が、煮詰まってしまってますので、考え付きません。 どうか、助けてください。

  • Access 帳票フォームでカレント行だけ色反転させれますか?

    いつもここのサイトにはお世話になっています。 今回もよろしくお願いします。 Access2002と VBAを使用して、マスターテーブルのメンテナンスの画面を作成しています。 1フォームの構成は上部に入力欄があり、 下部にサブフォームで帳票フォーム形式でテーブルが表示してあります。 下部のテーブルでレコードをクリックすると、上部の入力欄にクリックした部分のレコード(サブフォームのカレント行)内容を表示し、上部の入力欄にてデータの変更/更新を行います。 みなさんに教えていただきたいのは、 下部のサブフォーム部分でクリックした際に、クリックしたレコードの部分だけ色反転させるなどして「目立たせたい」のですが、VBAなどで色の指定を変更しても、サブフォーム全体の色が変わってしまいます。 なんとかして、1目で「カレント行」と「それ以外」とわかるようにする方法はないでしょうか? 補足説明はしますのでなんなりと申し付けてください。 よろしくお願いします。

  • テーブル1から抽出したものをテーブル2に入れたい

    ACCESSのVBA初心者です。 基本的な質問で申し訳ないのですが、どうかご教授をお願いします。 まず、まったく同じフィールドを持つテーブル1とテーブル2があります。 抽出したい項目は、テーブル1の中にある[性別]と[登録月]が一致するデータの全てです。 性別と登録月は別のフォームのコンボボックスで選択したもので抽出しようと思っています。 該当するデータが含まれているレコードを全てテーブル2に移したいです。 説明が下手で申し訳ないのですが、どうかご教授をお願い致します。 Dim rs As DAO.Recordset Set db = CurrentDb() Set rs = db.OpenRecordset("テーブル1", dbOpenDynaset) DoCmd.RunSQL "DELETE FROM テーブル2" rs.Filter = " テーブル1.性別 = テーブル2.性別 & テーブル1.登録月 = テーブル2.登録月" テーブル2 = テーブル1.RecordsetClone 最初にdeleteがあるのは、前回の抽出条件を消したいからです。 よろしくお願い致します。