- ベストアンサー
ACCESSでの期間の計算
ACCESSで従業員の台帳を作成するとします。 ある書類を出す為に入社から3ヶ月経過したものを全抽出したいのです。 入社月が6月1日として 3ヶ月経過した者を抽出、ということです。 入社月のフィールドは設けてあり あとは3ヶ月を計算させたいのですがどうしたらよいでしょうか? 入社した6月1日から3ヶ月経過した9月1日が対象となる 社員全員を抽出、これらは毎月、7月1日入社なら10月1日が対象となるように発生します。 初心者ですがどのような式になるか教えて頂けませんか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>入社月が6月1日として 入社月じゃなく入社日ということでいいですね データ型も日付時刻型ということでいいでしょか 入社日の抽出条件欄に <=DateAdd("m",-3,Date())
その他の回答 (3)
- CHRONOS_0
- ベストアンサー率54% (457/838)
百日前なら <=DateAdd("d",-100,Date()) ちょっと苦言 見たことのない関数が出てきたらヘルプで確認しましょうね
お礼
ご回答どうもありがとうございます。 参考にして実際に使用してみます。
回答キャンセルのお詫び: 関数と関数内との同一性が余りにも高すぎるのでキャンセルします。 ゴミ回答として無視して下さい。
まあ、何でもかんでも関数にしないと気が済まない性質。 [イミディエイト] ? 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 チラッとこういう考えもあるということです。
お礼
VBでしょうか? 少々解読に時間がかかりそうです。 現在いろんな条件での抽出をしなければならず 社員も多い為本格的な社内システムが導入されるまでは ACCESSで管理しようとしています。 ちょっと地道に読んでみます。 ありがとうございます。
お礼
お返事ありがとうございます。 はい、日付時刻型で大丈夫です。 3ヶ月経過後で現在の月より3ヶ月前のものを抽出という 意味なんですね。 コレと同様に、年や日付で計算もできそうですね。 3ヶ月経過のモノを抽出ですが、実際の処理としては 2週間前くらいには準備開始と考えた場合日にちで マイナス◎◎日という考え方でもできるんでしょうか?