一回も披露したことのない豆知識

アクセス2003で作業管理のデータベースを作っています。
フォームで入力された作業開始日に部品ごとに決まっている規定作業日数(営業日のみ)をたして作業完了予定日を出したいのですが、うまくできなくて、どうしようもなくなってしまい、質問させていただきました。

○テーブル「部品マスタ」
部品番号
部品名
規定作業日数

○テーブル「カレンダー」
年月日
営業日フラッグ
(営業日フラッグは、営業日が1、休業日を0としています)

○テーブル「受注マスタ」
受注ID
部品番号
作業開始日
作業完了予定日

上記「部品マスタ」と「受注マスタ」をもとにクエリを作成し、入力フォームを作成しました。

○フォーム「受注データ入力」
(入力)受注ID
(入力)部品番号
(入力)作業開始日
(表示)部品名
(表示)規定作業日数
(計算)作業完了予定日


翌営業日とか3営業日後という風に納期などを計算する方法は見つけられたのですが、そこから応用をきかすことができなくて、行き詰ってしまいました・・。どなたか助けていただける方、よろしくお願いします。

A 回答 (5件)

s_husky です。



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

s_husky です。


GetDaysWorked の間違いです。
    • good
    • 0

後で、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/05/19 16:29
    • good
    • 0

例えば、"2006/10/10" が作業開始日で規定作業日数=2 だと作業完了予定日は"2006/10/11"になります。



? CDATE("2006/10/10") + (2 -1)
2006/10/11

うーん!
どこで、行き詰っているのでしょうか...

この回答への補足

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

補足日時:2006/05/19 13:36
    • good
    • 0

こんにちは、


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

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

この回答への補足

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

補足日時:2006/05/19 13:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報