営業日ベースの日付の加減算を行うには?

解決


はまち  2003-12-05 02:41:14  No: 80741

営業日ベースの日付の加減算を行うには?

例えば、「基準日」の4営業日後を返す
という関数を作りたいと思っています。
ちなみに入力される「基準日」も平日とは限りません。

休日は会社によっても異なるし、春分の日秋分の日は、正確には計算では
算出不可能なので、休日日付テーブルを用意しようと思っています。
これはある程度をバッチで入力し、異なる部分があればそこを
手作業で修正するという仕組みを考えています。

そして、加算であった場合には、「基準日」が平日になるまで日付を加算。
平日になった時点を「新基準日」とし、そこから
指定された平日分日付を加算するという仕組みを考えています。

しかしこれだと、その日が平日かどうかを確認するために
毎回DBにアクセスしなければならず、非効率に感じます。

このような仕組みはよく行うものだと思うのですが、
もっといい方法などありましたらお知恵を貸してください。
よろしくお願いします。

よく考えたらVB(だけ)の話ではないですね。
でも、いまVBでやってるのでとりあえず…
すみませんよろしくお願いします。


たかみちえ  URL  2003-12-05 05:32:46  No: 80742

DBは使ったことないのでよくわかりませんけど、
計算に関係のありそうな日付(今月と来月のだけとか)をもってきて、それでその場限りの休日表を作り、
それを使えば早く済むんじゃないですか?

  説明下手で申し訳ないですが^^;


ねろ  2003-12-05 17:22:42  No: 80743

DBにカレンダーマスターはないいんですか?
普通は前の年の12月までには次の年のカレンダーが決まるものですよね。
無ければ、西暦、月、曜日、営業/非営業日のフィールドを作っておいて
カレンダーが決まった時点で登録し、登録した時点で各PCにデーターを
落としておく、各PCではどんな形式でもいいのでそのデーターをファイルで
保存しておいて。使う時は配列に読み込んで、月の営業日数とか、基準日
からの営業日数、月の最終営業日なんかは配列を一なめすればわかります。
当然変更があった時はDBの方を変えて、PCは読み直す。


はまち  2003-12-05 23:05:40  No: 80744

新規開発なので、カレンダーマスタもありません。
カレンダーマスタというのは、すべての日付が登録されていて
休日・平日フラグがあるようなものでしょうか?

そういう考えはありませんでした。なるほど。
で、それを余分に持ってきて
ファイルに落としたり、メモリに持ってきたり…
なるほど。

もう少しお聞きしたいのですが、やはりここはVB板なので、
もっとふさわしいところで質問しなおしたいと思います。
ありがとうございました。


ねろ  2003-12-06 07:25:04  No: 80745

>すべての日付が登録されていて休日・平日フラグがあるようなものでしょうか?
そのとおりです。基準には普通はユリウス日(Julian date)と言うものを使います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加