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

ACCESSで従業員の台帳を作成するとします。
ある書類を出す為に入社から3ヶ月経過したものを全抽出したいのです。
入社月が6月1日として
3ヶ月経過した者を抽出、ということです。

入社月のフィールドは設けてあり
あとは3ヶ月を計算させたいのですがどうしたらよいでしょうか?

入社した6月1日から3ヶ月経過した9月1日が対象となる
社員全員を抽出、これらは毎月、7月1日入社なら10月1日が対象となるように発生します。

初心者ですがどのような式になるか教えて頂けませんか?

A 回答 (4件)

>入社月が6月1日として


入社月じゃなく入社日ということでいいですね
データ型も日付時刻型ということでいいでしょか

入社日の抽出条件欄に
<=DateAdd("m",-3,Date())
    • good
    • 0
この回答へのお礼

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

はい、日付時刻型で大丈夫です。
3ヶ月経過後で現在の月より3ヶ月前のものを抽出という
意味なんですね。
コレと同様に、年や日付で計算もできそうですね。

3ヶ月経過のモノを抽出ですが、実際の処理としては
2週間前くらいには準備開始と考えた場合日にちで
マイナス◎◎日という考え方でもできるんでしょうか?

お礼日時:2007/09/01 16:17

百日前なら



<=DateAdd("d",-100,Date())

ちょっと苦言
見たことのない関数が出てきたらヘルプで確認しましょうね
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。

参考にして実際に使用してみます。

お礼日時:2007/09/02 20:23

回答キャンセルのお詫び:



関数と関数内との同一性が余りにも高すぎるのでキャンセルします。
ゴミ回答として無視して下さい。
    • good
    • 0

まあ、何でもかんでも関数にしないと気が済まない性質。



[イミディエイト]
? GetDateDiff("2007/06/01", "2007/08/01", "m")
2

? GetDateDiff("2007/06/01", "2007/09/01", "m")
3

? DBSelect("SELECT * FROM Employee WHERE GetDateDiff(入社日, #2007/06/01#, 'm')>0")
2;鈴木 一郎;2007/04/01;
3;中村 太郎;2007/05/01;

? DBSelect("SELECT * FROM Employee WHERE GetDateDiff(入社日, #2007/06/01#, 'm')>1")
2;鈴木 一郎;2007/04/01;

? DBSelect("SELECT * FROM Employee WHERE GetDateDiff(入社日, #2007/06/01#, 'm')=1")
3;中村 太郎;2007/05/01;

このように、式を考える必要がないのが関数。

? DBSelect("SELECT * FROM Employee WHERE GetDateDiff(入社日, #2007/06/01#, 'yyyy')=1")
1;古井 要男;2006/04/01;

そして、一年が経過した社員の抜き出しにも利用できます。

Public Function GetDateDiff(ByVal fromD As Date, ByVal toD As Date, ByVal T As String) As Integer
  GetDateDiff = DateDiff(T, fromD, toD)
End Function

チラッとこういう考えもあるということです。
    • good
    • 0
この回答へのお礼

VBでしょうか?

少々解読に時間がかかりそうです。
現在いろんな条件での抽出をしなければならず
社員も多い為本格的な社内システムが導入されるまでは
ACCESSで管理しようとしています。

ちょっと地道に読んでみます。
ありがとうございます。

お礼日時:2007/09/01 16:20

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

関連するカテゴリからQ&Aを探す