Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル期間を指定して、その間の全ての日付を取得したい
記事No172057
投稿日: 2017/10/10(Tue) 16:03
投稿者ひーさん
解決済: ON
OS: Windows 8
Access Version: 2013


フォームにて、「2016/01/01 〜 2016/12/31」

と検索期間を指定した場合に

クエリにて

2016/01/01
2016/01/02
2016/01/03




2016/12/29
2016/12/30
2016/12/31

のような連続した日付を取得したいです。

アドバイスいただけると助かります。

タイトルRe: 期間を指定して、その間の全ての日付を取得したい
記事No172058
投稿日: 2017/10/10(Tue) 16:18
投稿者ナバ
解決済: ON
こんにちは。

> アドバイスいただけると助かります。

フォーム名:フォーム1
テキストボックス1:日付自
テキストボックス2:日付至

としたとき、クエリーの日付の条件欄に

Between Forms!フォーム1!日付自 AND Forms!フォーム1!日付至

でどうでしょうか。

タイトルRe^2: 期間を指定して、その間の全ての日付を取得したい
記事No172059
投稿日: 2017/10/10(Tue) 17:25
投稿者ひーさん
解決済: ON
ご返信ありがとうございます。

日付の元となるテーブルはない状態でして。


何年か分の日付のテーブルを作成して、フォームの期間を抽出条件としたクエリを作成する方法が、簡単そうですが、日付のテーブルを何年か毎に追加していく作業が必要になるので、別の方法を探している次第です。

タイトルRe^3: 期間を指定して、その間の全ての日付を取得したい
記事No172061
投稿日: 2017/10/11(Wed) 08:51
投稿者ナバ
解決済: ON
> 何年か分の日付のテーブルを作成して、フォームの期間を抽出条件としたクエリを作成する方法が、簡単そうですが、
> 日付のテーブルを何年か毎に追加していく作業が必要になるので、別の方法を探している次第です。

日付の元となるテーブルを作ってしまった方が単純ですよ。
1年365件、最初に20年分作っても7300件。どうってことはありません。

タイトルRe^4: 期間を指定して、その間の全ての日付を取得したい
記事No172062
投稿日: 2017/10/12(Thu) 10:24
投稿者ひーさん
解決済: ON
> > 何年か分の日付のテーブルを作成して、フォームの期間を抽出条件としたクエリを作成する方法が、簡単そうですが、
> > 日付のテーブルを何年か毎に追加していく作業が必要になるので、別の方法を探している次第です。
>
> 日付の元となるテーブルを作ってしまった方が単純ですよ。
> 1年365件、最初に20年分作っても7300件。どうってことはありません。

わかりました。

日付テーブルを作成してから、抽出条件を作ってみます。

ありがとうございました!

タイトルRe^2: 期間を指定して、その間の全ての日付を取得したい
記事No172060
投稿日: 2017/10/10(Tue) 17:28
投稿者tkwan
解決済: ON
> としたとき、クエリーの日付の条件欄に
>
> Between Forms!フォーム1!日付自 AND Forms!フォーム1!日付至

まず日付を作ることが必要なのではないでしょうか? (^^;

こちらが参考になるのでは?

31レコードのテーブルひとつでいろんなカレンダーを作る。
https://accesskid.wordpress.com/2010/10/12/%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E4%B8%80%E3%81%A4%E3%81%A7%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8B%E3%80%82/

タイトルRe^3: 期間を指定して、その間の全ての日付を取得したい
記事No172063
投稿日: 2017/10/12(Thu) 10:44
投稿者ひーさん
解決済: ON
> > としたとき、クエリーの日付の条件欄に
> >
> > Between Forms!フォーム1!日付自 AND Forms!フォーム1!日付至
>
> まず日付を作ることが必要なのではないでしょうか? (^^;
>
> こちらが参考になるのでは?
>
> 31レコードのテーブルひとつでいろんなカレンダーを作る。
> https://accesskid.wordpress.com/2010/10/12/%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E4%B8%80%E3%81%A4%E3%81%A7%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8B%E3%80%82/


ご返信ありがとうございます。

参考にいろいろやってみました。

SQLを理解するのに苦労していますが、やってみます!

ありがとうございました。

タイトルRe: 期間を指定して、その間の全ての日付を取得したい
記事No172064
投稿日: 2017/10/12(Thu) 16:00
投稿者mayu
解決済: ON
> クエリにて
> 2016/01/01
> ・
> 2016/12/31
> のような連続した日付を取得したいです。

■ DDL-SQL
---------------------------------------------------------

CREATE TABLE t_num ( num INT NOT NULL PRIMARY KEY ) ;

---------------------------------------------------------

numフィールドには 0 〜 9 までの数値を入力しておきます。


■ DML-SQL
-----------------------------------------------------------------------

PARAMETERS d_start DATETIME
         , d_end   DATETIME ;
SELECT DateAdd( 'd'
              , t1.num + t2.num * 10 + t3.num * 100 + t4.num * 1000
              , d_start
       ) As 任意日付
FROM t_num t1
   , t_num t2
   , t_num t3
   , t_num t4
WHERE t1.num + t2.num * 10 + t3.num * 100 + t4.num * 1000
          <= DateDiff( 'd', d_start, d_end )
;

-----------------------------------------------------------------------

SQLを実行し、任意の 開始日 と 終了日 を入力すると
ご希望の結果になるでしょう。

タイトルRe^2: 期間を指定して、その間の全ての日付を取得したい
記事No172065
投稿日: 2017/10/14(Sat) 16:23
投稿者ひーさん
解決済: ON
> > クエリにて
> > 2016/01/01
> > ・
> > 2016/12/31
> > のような連続した日付を取得したいです。
>
> ■ DDL-SQL
> ---------------------------------------------------------
>
> CREATE TABLE t_num ( num INT NOT NULL PRIMARY KEY ) ;
>
> ---------------------------------------------------------
>
> numフィールドには 0 〜 9 までの数値を入力しておきます。
>
>
> ■ DML-SQL
> -----------------------------------------------------------------------
>
> PARAMETERS d_start DATETIME
> , d_end DATETIME ;
> SELECT DateAdd( 'd'
> , t1.num + t2.num * 10 + t3.num * 100 + t4.num * 1000
> , d_start
> ) As 任意日付
> FROM t_num t1
> , t_num t2
> , t_num t3
> , t_num t4
> WHERE t1.num + t2.num * 10 + t3.num * 100 + t4.num * 1000
> <= DateDiff( 'd', d_start, d_end )
> ;
>
> -----------------------------------------------------------------------
>
> SQLを実行し、任意の 開始日 と 終了日 を入力すると
> ご希望の結果になるでしょう。


ご返信ありがとうございます。

様々な方法があるのですね。

勉強になりました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る