- 締切済み
アクセスで営業日を計算させる方法について
アクセス2003で作業管理のデータベースを作っています。 フォームで入力された作業開始日に部品ごとに決まっている規定作業日数(営業日のみ)をたして作業完了予定日を出したいのですが、うまくできなくて、どうしようもなくなってしまい、質問させていただきました。 ○テーブル「部品マスタ」 部品番号 部品名 規定作業日数 ○テーブル「カレンダー」 年月日 営業日フラッグ (営業日フラッグは、営業日が1、休業日を0としています) ○テーブル「受注マスタ」 受注ID 部品番号 作業開始日 作業完了予定日 上記「部品マスタ」と「受注マスタ」をもとにクエリを作成し、入力フォームを作成しました。 ○フォーム「受注データ入力」 (入力)受注ID (入力)部品番号 (入力)作業開始日 (表示)部品名 (表示)規定作業日数 (計算)作業完了予定日 翌営業日とか3営業日後という風に納期などを計算する方法は見つけられたのですが、そこから応用をきかすことができなくて、行き詰ってしまいました・・。どなたか助けていただける方、よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
s_husky です。 補足の件は、その通りです。 なお、GetDaysWorked関数は Access2002でテーブルも作成し検証しております。
s_husky です。 GetDaysWorked の間違いです。
後で、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 といった感じです。
例えば、"2006/10/10" が作業開始日で規定作業日数=2 だと作業完了予定日は"2006/10/11"になります。 ? CDATE("2006/10/10") + (2 -1) 2006/10/11 うーん! どこで、行き詰っているのでしょうか...
補足
質問したい事がうまく説明できていなかったようで、すみません。 作業開始日、作業完了予定日ともに営業日、規定作業日数も営業日数で計算させたいのです。営業日というのは、会社独自のカレンダーによるもので、土日祝日が休みというわけではないので、テーブル「カレンダー」のフラッグによって判別させるようにしています。 たとえば、作業開始日が2006/05/02で規定作業日数が8日の場合、2006/05/17を作業完了予定日に返したいのです。
- miwaharu
- ベストアンサー率25% (29/112)
こんにちは、 kt関数アドインを使うと、祝祭日、土日、 銀行営業日などが判断できます。 こちらと組み合わせて利用してはいかがでしょうか。 親切にコードも公開していらっしゃるので、 参考になると思います
補足
さっそくのアドバイスありがとうございます。説明が不足していて申し訳なかったのですが、できればアクセス内でVBAとかを使ってできればと思っています。
補足
やってみましたが、「コンパイルエラー 引数は省略できません」とでてしまいました。日付と稼働日は、それぞれ年月日と営業日フラッグに置き換えればいいのでしょうか?