プロが教える店舗&オフィスのセキュリティ対策術

以下の様な三年間のデータを各期ごとに抽出したいのですが
どのようにすれば良いでしょうか?

例:今年の場合
今期19/7~20/6
前期18/7~19/6
前々期17/7~18/6

今期の抽出例
y/x y=年 x=月 (現在の年月)
7≦x≦12→y/7~y+1/6=<
1≦x≦6→y-1/7~y/6=<

このような形になると思うのですが論理式で、現在年月の使用方法が分かりません。
日数計算に使うDataは利用可能?なのでしょうか
宜しければ記述方法も教えてください。

A 回答 (4件)

>このような形になると思うのですが


こんなややこしいことをする必要はありません

期首が7月だったら6ヶ月ずらして、年だけ取り出せば年度が求まります
テーブルの日付フィールドが日付時刻型なら

年度:Year(DateAdd("m",-6,[日付]))

この回答への補足

前回はお世話になりました。
Yearで文字列を年に変換することが出来るのですね。
さらにDateAddを使い個別の年を出すわけですね。
前回に比べて大分Accessが分かってきました。
ありがとうございます。

補足日時:2007/12/20 13:46
    • good
    • 0

Public Function DBP(ByVal K As Integer) As Date


  DBP = DateSerial(DatePart("yyyy", "1988/7/1") + K, DatePart("m", "1988/7/1"), 1)
End Function

もしかしたら、第1期の開始日を間違っているかも・・・。
そこは、まあ、調節して下さい。
    • good
    • 0

余り難しく考える必要はないのでは・・・。



[イミディエイト]
? DBP(19)
2008/07/01
? DBP(20)-1
2009/06/30

このように、各会計期首日を求める DBP関数を作成すれば事足りるのでは・・・。
そうすれば、

XXXX BETWEEN '2008/07/01' AND '2009/06/30'

と、特定の期間のデータを抽出できると思います。

Public Function DBP(ByVal K As Integer) As Date
  DBP = DateSerial(DatePart("yyyy", "1989/7/1") + K, DatePart("m", "1989/7/1"), 1)
End Function

DBP関数にマジックナンバーとして"1989/7/1"を埋め込むのは関心しません。
そこは適当に改善するとして、こんな関数を用意すれば各会計期首日を指定できます。

>現在年月の使用方法が分かりません。

それは、色々と問題が出ると思いますよ。
「現在日=処理日」の等式は、常に100%成立することはないですよ。

この回答への補足

DBP関数?このような関数があるのですか・・・
解説書の目録で探してみましたが見つかりませんでした。

補足日時:2007/12/19 16:24
    • good
    • 0

年単位の抽出なら、フィールド欄に下記のように追加して


年度:Year(Dateadd("m",-7,[日付のフィールド]))
抽出条件を Between Year(Dateadd("m",-43,Date()) And Year(Dateadd("m",-7,Date())

この回答への補足

構成エラーがでます。
私が勘違い?をしているのですかね・・・。

補足日時:2007/12/19 16:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!