• ベストアンサー

Accessで期間抽出方法

アクセスの検索フォームで 期間の抽出をしたいと思っています。 クエリではできるのですが、クエリではなく、コードビルダを使用しています。 「検索フォーム」で条件を入力し、「T_マスタテーブル」から作成した 「検索結果フォーム」に表示したいのです。 検索フォームの 「取得日1」に1999/3/6、「取得日2」に2002/4/25 と入力した場合、1999/3/6~2002/4/25の間が表示されるようにしたいのです。 どのように入力すればいいのでしょうか? 宜しくおねがいがします。 Ac2000

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

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

再びmaruru01です。 まず、WhereCondというのは、全検索条件を繋げた最終的な条件文字列ですから、 WhereCond = "取得日 BETWEEN #" & 取得日1.Value & "# AND #" & 取得日2.Value & "#" としてしまうと、これまでのIDやら名前やらが全て無駄になってしまいます。(せっかくWhereCondに格納したのに、上書きしてしまっているので。) で、書き方はIDとかと基本的に同じです。 変数宣言で Dim whereDate As String を追加し、取得日のところを、 '取得日 If Me!txt取得日1.Value <> "" And Me!txt取得日2.Value <> "" Then   whereDate = "(T_マスタテーブル.取得日 BETWEEN #" & Me!txt取得日1.Value & "# AND #" & Me!txt取得日2.Value & "#)"   WhereCond = WhereCond & tempOper & whereDate End If で、この後に、先頭の演算子を削除するためのMid関数の文(でしたっけ)以降を入れます。 ちなみに、T_マスタテーブルの取得日フィールドのデータ型が日付になっていないとエラーになります。 あと、condIDという変数が出てきますが、これはwhereIDの間違いですよね。 では。

KODAMAR
質問者

お礼

ありがとうございます!! できました。 >まず、WhereCondというのは、全検索条件を繋げた最終的な条件文字列ですから、 そうだったんですが、知りませんでした。 >あと、condIDという変数が出てきますが、これはwhereIDの間違いですよね。 はい、そうです、お恥ずかしい。。。 >f Me!txt取得日1.Value <> "" And Me!txt取得日2.Value <> "" Then ここの書き方が一番よくわからなくて、悩んでいたんです。 無事解決しました。 ありがとうございました。

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

その他の回答 (1)

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

こんにちは。maruru01です。 検索フォームに[txt取得日1]と[txt取得日2]というテキストボックスがあるとします。 例えば、[表示]ボタンのようなコマンドボタンのクリックイベントに以下のように書きます。 Dim WhereCond As String WhereCond = "取得日 BETWEEN #" & txt取得日1.Value & "# AND #" & txt取得日2.Value & "#" DoCmd.OpenForm "検索結果フォーム", , acNormal, WhereCond, acFormEdit, acWindowNormal OpenFormメソッドの各引数の詳細はヘルプなどを参照して下さい。 なお、予め"検索結果フォーム"のレコードソースプロパティに、"T_マスタテーブル"を指定しておいて下さい。 ちなみに2つのテキストボックスの内容が、日付と認識出来ない文字列だとエラーになります。 では。

KODAMAR
質問者

補足

いつもいつもありがとうございます。 質問文にはかいていなかったのですが、 他にも検索条件があり、そちらはきちんと入力されていて、OKの状態です。 ----------こんな感じです---------- Dim SQL As String Dim WhereCond As String Dim whereId As String Dim whereName As String Dim whereBirth As String Dim whereSex As String WhereCond = "" '変数の初期化。本当はいらないけど明示的に。 Select Case Me!frame.Value Case 1 'AND検索 tempOper = " AND " '前後の半角スペースを忘れずに strCount = 5 Case 2 'OR検索 tempOper = " OR " '前後の半角スペースを忘れずに strCount = 4 End Select tempCond = "" 'ID If Me!ID.Value <> "" Then condId = "(T_マスタテーブル.ID like '*" & Me!ID.Value & "*')" WhereCond = WhereCond & tempOper & condId End If    :    :    : ------------------------------ ここに '取得日 WhereCond = "取得日 BETWEEN #" & 取得日1.Value & "# AND #" & 取得日2.Value & "#" としてしまったのですが、エラーが出てしまいます。 修正点を教えていただけますでしょうか?

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

関連するQ&A

  • アクセスでデーター抽出方法を教えて

    アクセスで、クエリー&サブフォームを使わず、テーブルのデータをフォーム上で抽出したいです。教えて下さい。(例)テーブル1:商品名A 商品番号2・・・・・、フォーム上で商品番号2と入力したら商品名Aだけを表示したい。

  • クエリーで全部のデータを抽出する方法

    アクセスのクエリーでデータを抽出する時、具体的にはフォームでデータを入力し抽出するのですが、たとえばフォームのテキストボックスに数字を入れないとそのクエリーのフィールドは抽出がかからないようにしたいのです。(抽出フィールドが1つなら数字をいれなければクエリーのデータすべてが表示される) ----------------------------------- フィールド   A      B     c テーブル   テーブル1 テーブル1 テーブル1 抽出条件    []    [] または    ---------------------------------- 上はクエリーのデザインですがクエリーをひらくと抽出条件をきいてきますがA列は何も入力しないでB列では1と入力するとBの列に1の入ってるレコードを表示させたいのです。(もし空欄が無理ならAの列の時何かある文字を入力すると全部表示になる、でもいいです。) まわりくどくなりましたが、アクセス超入門者です。よろしくおねがいします。

  • Accessの条件つき抽出>テーブル作成。

    「T_マスタ」 ・氏名ID ・氏名 ・会社グループ 「T_サブ」 ・氏名ID ・データ年 というようなテーブルがあり、この2ツから「Q_検索」というクエリを作成しています。 このクエリを元に検索フォームを作成しました。 この検索フォームで「データ年」を選んで「エクスポート」を押すと、 会社グループが「110」のものだけを抽出して「T_Excel_110」という テーブルが作成されるようにしたいのです。 「エクスポート」ボタンのコードは ---------------------------------------- (検索用のコード)省略 DoCmd.RunSQL "SELECT [T_マスタ].[氏名ID], [T_マスタ].[氏名], [T_マスタ].[会社グループ],[T_サブ].[データ年], INTO T_Excel_110" _ & " FROM (T_マスタ INNER JOIN T_サブ ON [T_マスタ].[氏名ID]=[T_サブ].[氏名ID]) " _ & " WHERE ((([T_マスタ].[会社グループID])="110"))" & WhereCond stDocName = "T_Excel_110" DoCmd.OpenTable stDocName, acNormal, acEdit MsgBox "[ファイル]-[エクスポート]でExcelファイルを指定してください。" としたのですが、エラーになってしまいます。 いったいどこを直せばいいのでしょうか?

  • ACCESSクエリーの抽出条件について

    OS WIN7 ACCESS 2007使用です。 クエリーの抽出条件について何ですが、テーブルにコードというフィールドがありまして、そこには数値が入力されています。 コード 1 2 3 4 5 ・ ・ このテーブルを元に選択クエリーを作りたいのですが、条件としてコードの値に2と3両方がある場合、2のレコードだけを表示せず、どちらか一方の数値だけの場合またはどちらもない場合は、全てのレコードを表示するようにしたいのです。 抽出条件はどのように書けばよいのでしょうか? いろいろ試したのですが、うまくいきません。 どなたかお助け下さい。

  • Accessのフォームについて教えてください。

    こんばんは。アクセス入門者です。 入門書やできるシリーズなどいくつかのアクセスの本を見たのですが、 フォームについて、理解できません。 ●担当者マスタ ■客先マスタ ★コードマスタ ▲売り上げ計画マスタ ◎売上げ結果マスタ テーブルを作り、それぞれのテーブルから必要な項目を集めて、クエリを作成しました。思ったとおりの結果になったので、これを元にフォームを作成しました。 思ったとおりの結果が表示されるのですが、このフォームに入力が出来ません。できなかったので、次の方法を試しました。 ★コードマスタと▲売り上げ計画マスタのデータをサブフォームに配置しデータを追加させようと思って、あらたにフォームを作りました。やはり、思ったとおりの表示はされるのですが、追加ができないのです。それぞれのテーブルには、★コードマスタを主にそれぞれ、一対多にリレーションを組んでいます。 1つのフォームで色々なテーブルに結果を反映できるように、参照整合性の更新、削除にもチェックを入れました。 この考えは間違っているのでしょうか。 ○○マスタとあるように、それぞれ1つのテーブルに1つのフォームにしなければならないのでしょうか。 複数のテーブルから取り出したデータの更新は無理なのでしょうか。 ある程度、クエリまで完成したのにフォームでつまずいて苦しんでいます。ご解答宜しくお願い致します。

  • Accessでキーワード検索(抽出)

    Access97で新聞記事のデータベースを作っています。 以下のようなテーブルがメインの非常に単純なものです。 ┌──┬───┬──┬──┐ │日付│見出し│分類│備考│ ├──┼───┼──┼──┤ 新聞記事を日付やキーワードで抽出したいのですが、 キーワード検索がうまく出来ません。 パラメーターで見出し列からデータを抽出したところ、 完全に一致するデータは抽出されるのですが、 「*キーワード*」で一部合致のデータを 抽出することは出来ませんでした。 デザインビューで「抽出条件」に入力すれば 「*キーワード*」でも可能なことは確認しましたが Accessに慣れていない人に操作をさせたいため、できれば キーワード入力を促すフォーム(ダイアログ)表示 ↓ キーワードを入力して抽出 ↓ クエリー、フォーム又はレポートに表示 という手順にしたいのですが、 Accessの機能のみでそういったことはできますでしょうか? VBAを使った方がいいでしょうか?

  • アクセス2000でデータ抽出時に・・・。

    以前、質問No.203113で教えていただいたデータ抽出方法を応用して、別のデータベースでも同じようなものを作ったのですが、条件を入力して抽出できるものと出来ないものが出てきました。エラーとして「実行時エラー'2185':コントロールがフォーカスを取得していない時に、コントロールのプロパティまたはメソッドを参照することはできません。」と出ます。 テーブルには、T_グループ名、T_個人名簿、T_住所一覧があり、T_グループ名に付けたサブデータシートではT_個人名簿が正しく表示されているのに(グループ名でリンクしている)、T_グループ名とT_個人名簿から作ったクエリではデータが漏れています(T_個人名簿で代表者をチェックしてグループ名とその代表者がわかるように選択クエリを作っています)。このクエリをもとにフォームを作っているのですが、ここで表示されていないデータの抽出条件を入れると、上のようなエラーが出ます。クエリで表示されているものは上手く抽出できます。 このクエリをもとに作ったフォームだから、条件を入れても抽出できないのだろう、と言うことはわかるのですが、解決方法がわかりません。 ビギナーなので、どのように表現すればわかっていただけるのか・・・。わかりにくい内容ですが、どなたかご指導お願いします。

  • アクセスのクエリーで抽出方法

    以前(9/25)にもこのgooで質問しいろいろ指導を受けたのですがなかなか解決せず、時がたちなかなか回答が得られず、また同じ質問をします。 クエリーで抽出する方法なのですが、例えば a   b 山   50 川   30 のようなクエリーの表があります。フォームでテキストボックスに”山”と入力したら 山   50 と表示することはできますが”すべて”と入力したら 山   50 川   30 と表示したいのです。クエリーにはすべてという文言はありません。 クエリーの抽出条件でaのフィールドに=IIf(フォーム名![Text1],フォーム名![Text1],Is Not Null)と入力するもののうまくいきません。 アクセス超初心者です。なおアクセス97を使用しています。よろしくご指導ください。

  • ACCESS 選択クエリでの抽出条件について

    在庫マスターと得意先マスターのテーブルを使用して 在庫マスターのデータを抽出条件により出力したいと思っています。 在庫マスターは区分コード1の倉庫コードと区分コード3の店舗コードと分かれており、 抽出条件は区分コード1の時は倉庫コード199と155は除きます。 区分コード2の時は得意先マスターの形態コードから"1"と"2"のものを抽出します。 デザインビューでクエリ作成するで選択クエリから抽出条件を入力してデータを出力できないのでしょうか。 色々と試していますがエラーが表示され出力できません。 例) If([ST_WHTYPE]="1",([dbo_STOCK].[ST_WHNO]) Not In ("199","155"), IIf([ST_WHTYPE]="3",[CU_SHOPTYPE]="1" Or [CU_SHOPTYPE]="2")) この場合は集計関数・・・・・含んでないクエリーを実行しましたと表示されます。 他には複雑すぎるため評価できませんとかエラーが表示されます。 選択クエリでの抽出条件ではできないのでしょうか。

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

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

専門家に質問してみよう