営業日ベースの日付の加減算を行うには?
例えば、「基準日」の4営業日後を返す
という関数を作りたいと思っています。
ちなみに入力される「基準日」も平日とは限りません。
休日は会社によっても異なるし、春分の日秋分の日は、正確には計算では
算出不可能なので、休日日付テーブルを用意しようと思っています。
これはある程度をバッチで入力し、異なる部分があればそこを
手作業で修正するという仕組みを考えています。
そして、加算であった場合には、「基準日」が平日になるまで日付を加算。
平日になった時点を「新基準日」とし、そこから
指定された平日分日付を加算するという仕組みを考えています。
しかしこれだと、その日が平日かどうかを確認するために
毎回DBにアクセスしなければならず、非効率に感じます。
このような仕組みはよく行うものだと思うのですが、
もっといい方法などありましたらお知恵を貸してください。
よろしくお願いします。
よく考えたらVB(だけ)の話ではないですね。
でも、いまVBでやってるのでとりあえず…
すみませんよろしくお願いします。
DBは使ったことないのでよくわかりませんけど、
計算に関係のありそうな日付(今月と来月のだけとか)をもってきて、それでその場限りの休日表を作り、
それを使えば早く済むんじゃないですか?
説明下手で申し訳ないですが^^;
DBにカレンダーマスターはないいんですか?
普通は前の年の12月までには次の年のカレンダーが決まるものですよね。
無ければ、西暦、月、曜日、営業/非営業日のフィールドを作っておいて
カレンダーが決まった時点で登録し、登録した時点で各PCにデーターを
落としておく、各PCではどんな形式でもいいのでそのデーターをファイルで
保存しておいて。使う時は配列に読み込んで、月の営業日数とか、基準日
からの営業日数、月の最終営業日なんかは配列を一なめすればわかります。
当然変更があった時はDBの方を変えて、PCは読み直す。
新規開発なので、カレンダーマスタもありません。
カレンダーマスタというのは、すべての日付が登録されていて
休日・平日フラグがあるようなものでしょうか?
そういう考えはありませんでした。なるほど。
で、それを余分に持ってきて
ファイルに落としたり、メモリに持ってきたり…
なるほど。
もう少しお聞きしたいのですが、やはりここはVB板なので、
もっとふさわしいところで質問しなおしたいと思います。
ありがとうございました。
>すべての日付が登録されていて休日・平日フラグがあるようなものでしょうか?
そのとおりです。基準には普通はユリウス日(Julian date)と言うものを使います。
ツイート | ![]() |