• 締切済み

教えて!アクセス2007!/Access2007・期日指定で表示させる

教えて!アクセス2007!/Access2007・期日指定で表示させる方法 データーの日付は テキスト型で定型入力を>L99\年99\月99\日と設定し このように表示させてます→ H20年03月26日  このデーターからH20年03月26日からH22年07月31日までの 抽出方法を教えて下さい。

みんなの回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

訂正です。 >説明の通りSQLにコピーして貼り付けてみるのですが >うまくいきません の原因だと思いますが、#4において、 ############################ 名前を Q期日指定 とします。 SELECT T日付.納品日 FROM T日付 WHERE (((Format(CDate(Format([日付],"@@@@\/@@\/@@")),"gee\年mm\月dd\日")) Between [Forms]![F検索]![tx開始日] And [Forms]![F検索]![tx終了日])); ############################ としていましたが、中の[日付]を[納品日]にするのを 忘れていました。したがって、 SELECT T日付.納品日 FROM T日付 WHERE (((Format(CDate(Format([納品日],"@@@@\/@@\/@@")),"gee\年mm\月dd\日")) Between [Forms]![F検索]![tx開始日] And [Forms]![F検索]![tx終了日])); が正しいです。確認しておいてください。 これで動作すると思います。 フォームで表示したい、ということなので設定の手順を 述べます。 (1) クエリの作成 Q期日指定と同じ内容ですが、フォームの名前を 変えておきます。 SELECT T日付.納品日 FROM T日付 WHERE (((Format(CDate(Format([納品日],"@@@@\/@@\/@@")),"gee\年mm\月dd\日")) Between "H20年01月01日" And "H20年01月01日")); これで新規にクエリを作り、名前を「Q期日検索」としてください。 (2) フォームの作成 フォームの新規作成から、「オートフォーム表形式」を 選択し、「基になるテーブルまたはクエリの選択」で 「Q期日検索」を選択し、出来たフォームの名前を 「F期日検索」として保存してください。パラメータが 表示されますが (3) フォームの調整1 出来たフォームをデザインビューで開き、詳細のところに カーソルを当て、十字になったらクリックして下に3cmくらい 押し下げてください。ついでにラベルも下に移動させてください。 フォームの幅は適度に広くしておいてください。 空いたところに、テキストボックスを二つ、ボタンを 二つ設定してください。 テキストボックスの名前はそれぞれ、 「tx開始日」と「tx終了日」 にしてください。 それぞれのテキストボックスの定型入力に L99\年99\月99\日;;_ を貼り付けてください。 (4) フォームの調整2 二つのボタンの名前をそれぞれ、 「cmd抽出」と「cmd解除」 にしてください。 フォームのコード表を開き、以下を貼り付け 保存してください。 Private Sub cmd解除_Click() Me.RecordSource = "SELECT * FROM T日付 WHERE (((Format(CDate(Format([納品日],'@@@@\/@@\/@@')),'gee\年mm\月dd\日')) Between 'H20年01月01日' And 'H20年01月01日'))" End Sub Private Sub cmd抽出_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) Me.RecordSource = "SELECT * FROM T日付 WHERE (納品日 Between '" & Me!tx開始日 & "' AND '" & Me!tx終了日 & "')" End Sub (5) フォームの調整3 フォームのレコードソースのところに Q期日検索 と表示されていますが、これを消して、 改めて、(1) クエリの作成 のところにある「Q期日検索」のSQL文を コピーして貼り付けてください。 これにより、「Q期日検索」はいらなくなるので 削除してもかまいません。 以上で設定終了です。フォームを開いたときに はフォームのコントロールソースで Between 'H20年01月01日' And 'H20年01月01日' としているように特定の日を表示するように しておき、フォームにすべてのデータを表示 しないようにしておきます。選択したときに 選択したデータが表示されます。 cmd解除を押すと開いたときと同じになります。 もし、H20年01月01日の日付がテーブルに なければ何も表示されません。

107ravu
質問者

補足

いつもありがとうございます。 返事遅くなって申し訳ありません ずっとアドバイス通り、がエラーメッセージが次のようにでます 「式が正しく入力されてないか、数式に複雑な要素が多すぎます。 式を簡単にしてください」 色々してみるのですがうまくいきませんでした。 他に方法はあるのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

フォームのテキストボックスを参照して 期日をしぼり、クエリを表示する方法 フォームの名前をF検索とします。フォームに テキストボックスを二つ。名前は、 tx開始日 tx終了日 とします。なお、それぞれのテキストボックスの プロパティの定型入力のところに、 L99\年99\月99\日;0;_ を設定してください。 続いて、ボタンを一つ名前を、 cmd検索 とします。 フォームのコード表を開き、以下をコピーし、 貼り付け、保存します。 Private Sub cmd検索_Click() DoCmd.OpenQuery ("Q期日指定") End Sub 次に、以下のクエリを作成します。 名前を Q期日指定 とします。 SELECT T日付.納品日 FROM T日付 WHERE (((Format(CDate(Format([日付],"@@@@\/@@\/@@")),"gee\年mm\月dd\日")) Between [Forms]![F検索]![tx開始日] And [Forms]![F検索]![tx終了日])); これは、#3での、 Between [START] And [END] または、 Between "H20年03月26日" And "H22年07月31日" のところを、 Between [Forms]![F検索]![tx開始日] And [Forms]![F検索]![tx終了日] に変更したものです。 このほかにフォームにデータを表示することも できますが、少しややこしい設定が必要に なります。

107ravu
質問者

補足

いつもありがとうございます 説明の通りSQLにコピーして貼り付けてみるのですが うまくいきません (既存のデーターに使ってみました、すると「式が複雑すぎるので簡単にしてください」というような メッセージがでました) できればフォームで表示したいのです 宜しくお願いしまう。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

一旦、#1と#2はスルーしてください。 説明をし直します。 対象のテーブルを「T日付」とし、テキスト型のフィールド「納品日」 があるものとします。 (1) まず、テーブルの「納品日」はテキスト型ですから、 このままでは日付として計算はできません。方法としては、 「納品日」をフォーマットしてテキスト型を Accessが日付として認識できる「日付型」に 変更して「納品日」を日付として期間の抽出を 行なう方法。 SELECT T日付.納品日 FROM T日付 WHERE (((Format(CDate(Format([納品日],"@@@@\/@@\/@@")),"gee\年mm\月dd\日")) Between [START] And [END])); このクエリもパラメータが二つ出てきますが、この場合は それぞれのパラメータに、H20年03月26日 と H22年07月31日 を入力すれば、期間が抽出されます。 直接クエリに入力しておくには、 SELECT T日付.納品日 FROM T日付 WHERE (((Format(CDate(Format([納品日],"@@@@\/@@\/@@")),"gee\年mm\月dd\日")) Between "H20年03月26日" And "H22年07月31日")); のようにします。 (2) クエリに条件の入れ方がわからない、ということですが、 まずは(1)のようにテーブルを作ってデータを入れて(1) で表示したSQL文を新しいクエリを作り、そのSQLビューに 貼り付けてみてください。それからデザインビューに戻します。 そうすると、 フィールド | 納品日 | (1) | テーブル  | T日付  |   | 並べ替え  |     |   | 表示    |     |   | 抽出条件  |     | (2) | または   |     |   | (1)に Format(CDate(Format([納品日],"@@@@\/@@\/@@")),"gee\年mm\月dd\日") (2)に Between [START] And [END] または、 Between "H20年03月26日" And "H22年07月31日" が入っているのが確認できると思います。

107ravu
質問者

お礼

できました! 感激です!ありがとうございます☆☆☆☆☆ クエリで期間限定で表示できるようになりました これをフォーム上で日にち指定するにはどうすれば良いでしょうか? 引き続き宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

訂正です。 クエリの最初、 SELECT T日付.日付, T日付.名前 にいらないものがありました。 SELECT T日付.日付 にしてください。 SELECT T日付.日付 FROM T日付 WHERE (((Val(Right(Format([日付],"yyyy\,mm\,dd"),6))) Between [START] And [END])); です。

107ravu
質問者

補足

回答、有難うございます。 初心者のせいか WHERE (((Val(Right(Format([納入日],"yyyy\,mm\,dd"),6))) Between [H20年03月26日] And [H22年07月31日]));   ↑ どこに入れたら良いのかわからなくて・・・ お手数おかけしますが、もう少し解り易くお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

方法はいろいろあります。VBAを組み込む 方法もありますが、一応一番簡単であろう という前提を勝手において、以下のように。 「T日付」というテーブルに「日付」という フィールドを設定します。主キーである必要 はありません。「日付」フィールドの型と 定型入力は質問の通りとします。 以下のクエリを作ってみてください。 SELECT T日付.日付, T日付.名前 FROM T日付 WHERE (((Val(Right(Format([日付],"yyyy\,mm\,dd"),6))) Between [START] And [END])); [START] と [END] はたとえば、 [この日から] と [この日まで] というようにするとわかりやすいかもしれません。 WHERE (((Val(Right(Format([日付],"yyyy\,mm\,dd"),6))) Between [START] And [END])) のところでRightは取り出した日付の右から6文字取り出しています。 これは余分なHを取り除くためです。 Valは必要ないかも知れませんが数値型に変換しています。 Formatについてはこれから使われることも 出てきます。Format関数などで調べてみて ください。 このクエリを実行するとパラメータが出てきます。 SARTのパラメータに200326と入れ、 ENDのパラメータに220731といれます。 このような、感じですが、何かフォーム上で 取り出したりするのであれば Between [START] And [END] の部分を変更する必要があります。 場合によってはVBAが必要になります。 何か不都合が生じるようであれば捕捉をしてください。

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

関連するQ&A

  • ACCESS 日付表示で00月を使用する

    日付の表示を昭和61年00月と表示する場合があるのですが データ型 日付/時刻 のフィールド書式プロパティに ggge\年m\月と指定すると00月が使用できません。 00月を使用する場合、日付/時刻型では駄目なのでしょうか? 書式:ggge\年m\月 定型入力:>L99\年99\月;0;_

  • Access 期日が迫った文書を表示させたい

    いつもお世話になっています。 Accessで業務文書のデータを取り扱っています。 テーブルには「提出期日」というフィールドがあり、提出期日の日の3日前以内になったレコードを表示させるクエリを作りたいのです。 クエリに「提出期日」と今日の日付を使って、式を作ればよいと思うのですが、どのように記述すればよいかわかりません教えてください。 テーブルに今日の日付というようなフィールドはありません。 よろしくお願いします

  • 日付の表示を変えるマクロ

    閲覧ありがとうございます。 Excelのマクロに関しての質問です。 今、テキストデータから「東京都・晴れ」を含む行をExcelファイルに抽出後、そのデータを日付別にふり分けるマクロを作っています。 そこで、テキストデータの日付の表示「11/8/2009」(2009年8月11日)や「8/9/2009」(2009年9月8日)を「2009/8/11」「2009/9/8」のように、年・月・日という表示に変えたいのですが、検索しても色々試しても良いマクロが浮かびません。 よろしければ素敵なマクロ、ご教授願います。 ※ちなみに、入力規則などを指定してもテキストからデータを引っ張ってきているため(?)か上手くいきません。

  • アクセスのテキスト型フィールドの初期値

    アクセスのテーブルにテキスト型フィールド「●●日付」を作成しました。さらに、定型入力の方法として、日付(____/__/__)を指定しています。 このテーブルから、クエリでデータを取得する際、●●日付にデータを入力していないレコードのみを取得したいと思い、クエリの抽出条件として=""(ダブルクォーテーション)や=''(シングルクォーテーション)と記載したのですが、レコードが1件も抽出されません(もちろん●●日付にデータを入れていないレコードは複数あります)。一方で、<>""や<>''で、●●日付にデータが入力されているレコードを抽出しようとした場合は、●●日付にデータが入力されているレコードが抽出されます。 テキスト型フィールドにデータが入力されていないレコードを抽出するクエリはどのようにしたら作成できるのでしょうか?

  • レポートを上手く表示させたいのですが・・・Access2000

    こんにちわ。私はAccess初心者です。 業務でAccessを使用しているのですが、ご存知の方がおられましたら、 是非ご回答をよろしくお願い致します。 仕様ソフト:Access2000 【問題点】 テーブルに各種データがインポートされています。 レポートでそのテーブルに入っているデータを「月」ごとに表示・印字 できるようにしたいのですがやり方がわかりません。 例えば1月のデータのみを抽出して、レポートに表示させたい場合、 クエリで、1月のみ表示するように指定("1月")し、レポートにて ウィザードから作成すれば確かに1月だけ表示されます。 しかし、この方法では12ヶ月分のクエリとレポートを作成しなければ ならず、効率が非常に悪くて困ってます。 一覧で月を選択すれば自動的に指定月のレポートが表示されるような 方法をご教授下さい。 初心者的な質問で申し訳ございませんが、どうぞよろしくお願い致します。

  • 初心者用、日付検索でデータを抽出

    初心者用、日付検索でデータを抽出 いろいろWEBを検索してやり方を探しましたがあまりに初心者過ぎて試しても うまく動きません、 やりたいことは、 アクセス 2007を使用して下記のようなクエリから Qデータ (クエリ) 入力日 日付型 あああ テキスト型 いいい テキスト型 ううう テキスト型 開始日 日付型 終了日 日付型 終了日を入力して、(例2010年3月10日から2010年3月20日)までの あああ、いいい、うううの結果を抽出したいです、フォームを使って 一番簡単にできそうなやり方教えてください。 ・ACCESS簡単な使用法、accessクラブ、アクセス初心者入門などなど  見つくしましたが、理解できずで困っています。 どうぞ、よろしくお願いいたします。

  • アクセス2000で、あるテキストボックスだけ表示を変えるには?

    こんにちは。 Access2000を使っているのですが、あるテキストボックスの日付表示を 、通常“08/09/09"と表示されているものを“平成20年09月09日”と 表示させたいのですが、書式の所では「日付(S)」とか「日付(L)」と かの選択はあるものの、上記のような和暦に変える事ができません。 方法はございますでしょうか?

  • ACCESS期間抽出について

    ACCESS2002で請求書を作っています。 売り上げデータから2005年3月1日~2005年3月31日までを抽出して請求書を印刷したところ、3月4日~9日だけ抽出できませんでした。 そのデータを3月3日や10日に訂正すると抽出されるのです。 請求書印刷フォームに、開始年、月、日と終了年、月、日というテキストボックスを作って抽出して、レポートに印刷するようにしています。 クエリーで、年月: Year([日付]) & Month([日付]) & Day([日付])という項目で次のように抽出条件を入れています。 Between [Forms]![F-請求書印刷]![年] & [Forms]![F-請求書印刷]![月] & [Forms]![F-請求書印刷]![日] And [Forms]![F-請求書印刷]![年終] & [Forms]![F-請求書印刷]![月終] & [Forms]![F-請求書印刷]![日終] 開始日と終了日だけのテキストボックスにしないで、年、月、日と分けているのは、レポートでそれぞれ値の代入で使用するためです。 3日から9日だけ出ないという原因がわからないので、教えていただけませんでしょうか? よろしくお願いいたします。

  • Accessの日付で不思議なことが

    Access2003で見積書を作るシステムを作りました。日々、見積書発行し月末に各物件の見積一覧表を作ります。個々の見積データにある、見積日付を範囲指定して、データを抽出します。 その方法としてフォーム上に二つのテキストボックスを配置し、それぞれに「自見積日付」、「至見積日付」という名前をつけ、一覧表印刷クエリーの中の見積日付の抽出条件にBetweenで「自見積日付」~「至見積日付」ををいれ抽出します。これをレポートで見積一覧表を印刷します。この方法で日付が2006年12月31日までは問題なく出来ましたが、日付が2007年1月1日以降になると抽出できなくなってしまいました。 もちろん2007年1月1日以降のデータは存在します。 原因がまったく分りません。どなたか分る方はいませんか。よろしくお願いします。(質問の書き方が苦手で分りにくくて申し訳ありません)

  • Accessで、Today関数を使って条件を指定する

    いつもお世話になっております。 Accessで、Today関数を使った条件式を指定したいのですが、うまくいきません。どうすればよいでしょうか? やりたいことは以下の2点です。 (1)「期日」フィールドがあり、日付が入っています。そこで、「Today」から「期日」を引いて、プラスになるもの。つまり、期日が過ぎているものを抽出したい。 (2)「期日」から「Today」を引き、0~3になるもの。つまり、期日当日~3日前のものを抽出したい。 です。 よろしくお願いします。m(_ _)m