• 締切済み

アクセスで営業日を計算させる方法について

アクセス2003で作業管理のデータベースを作っています。 フォームで入力された作業開始日に部品ごとに決まっている規定作業日数(営業日のみ)をたして作業完了予定日を出したいのですが、うまくできなくて、どうしようもなくなってしまい、質問させていただきました。 ○テーブル「部品マスタ」 部品番号 部品名 規定作業日数 ○テーブル「カレンダー」 年月日 営業日フラッグ (営業日フラッグは、営業日が1、休業日を0としています) ○テーブル「受注マスタ」 受注ID 部品番号 作業開始日 作業完了予定日 上記「部品マスタ」と「受注マスタ」をもとにクエリを作成し、入力フォームを作成しました。 ○フォーム「受注データ入力」 (入力)受注ID (入力)部品番号 (入力)作業開始日 (表示)部品名 (表示)規定作業日数 (計算)作業完了予定日 翌営業日とか3営業日後という風に納期などを計算する方法は見つけられたのですが、そこから応用をきかすことができなくて、行き詰ってしまいました・・。どなたか助けていただける方、よろしくお願いします。

みんなの回答

noname#22222
noname#22222
回答No.5

s_husky です。 補足の件は、その通りです。 なお、GetDaysWorked関数は Access2002でテーブルも作成し検証しております。

noname#22222
noname#22222
回答No.4

s_husky です。 GetDaysWorked の間違いです。

noname#22222
noname#22222
回答No.3

後で、No1さんの回答を見て「そういうことか?」と思っていました。 私なら、次のような関数を作ります。 Public Function GetGetDaysWorked(ByVal CName As String, _                  ByVal SDay As Date, _                  ByVal N As Integer) As Date On Error Goto Err_GetGetDaysWorked   Dim Hiduke    As Date   Dim strSQLQuery As String   Dim dbsCurrent As DAO.Database   Dim rstCalender As DAO.Recordset   strSQLQuery = "SELECT 日付 FROM " & CName & " WHERE 日付 >= #" & SDay & "# AND 稼働日=True"   Set dbsCurrent = CurrentDb   Set rstCalender = dbsCurrent.OpenRecordset(strSQLQuery)   With rstCalender     If Not .EOF Then       .Move (N - 1)       Hiduke = .Fields("日付")     End If   End With   rstCalender.Close   dbsCurrent.Close Exit_GetGetDaysWorked:   GetGetDaysWorked = Hiduke   Exit Function Err_GetGetDaysWorked:   Hiduke = "1900/01/01"   Resume Exit_GetGetDaysWorked End Function ID    日付       稼働日 1     2006/10/10   Yes 2     2006/10/11   No 3     2006/10/12   Yes 4     2006/10/13   Yes 5     2006/10/14   No ? GetGetDaysWorked("カレンダー", "2006/10/10", 1) 2006/10/10 ? GetGetDaysWorked("カレンダー", "2006/10/10", 2) 2006/10/12 ? GetGetDaysWorked("カレンダー", "2006/10/10", 3) 2006/10/13 といった感じです。

melon100
質問者

補足

やってみましたが、「コンパイルエラー 引数は省略できません」とでてしまいました。日付と稼働日は、それぞれ年月日と営業日フラッグに置き換えればいいのでしょうか?

noname#22222
noname#22222
回答No.2

例えば、"2006/10/10" が作業開始日で規定作業日数=2 だと作業完了予定日は"2006/10/11"になります。 ? CDATE("2006/10/10") + (2 -1) 2006/10/11 うーん! どこで、行き詰っているのでしょうか...

melon100
質問者

補足

質問したい事がうまく説明できていなかったようで、すみません。 作業開始日、作業完了予定日ともに営業日、規定作業日数も営業日数で計算させたいのです。営業日というのは、会社独自のカレンダーによるもので、土日祝日が休みというわけではないので、テーブル「カレンダー」のフラッグによって判別させるようにしています。 たとえば、作業開始日が2006/05/02で規定作業日数が8日の場合、2006/05/17を作業完了予定日に返したいのです。

  • miwaharu
  • ベストアンサー率25% (29/112)
回答No.1

こんにちは、 kt関数アドインを使うと、祝祭日、土日、 銀行営業日などが判断できます。 こちらと組み合わせて利用してはいかがでしょうか。 親切にコードも公開していらっしゃるので、 参考になると思います

参考URL:
http://www.h3.dion.ne.jp/~sakatsu/ktfunc_main.htm
melon100
質問者

補足

さっそくのアドバイスありがとうございます。説明が不足していて申し訳なかったのですが、できればアクセス内でVBAとかを使ってできればと思っています。

関連するQ&A