- 締切済み
アクセスで営業日を計算させる方法について
アクセス2003で作業管理のデータベースを作っています。 フォームで入力された作業開始日に部品ごとに決まっている規定作業日数(営業日のみ)をたして作業完了予定日を出したいのですが、うまくできなくて、どうしようもなくなってしまい、質問させていただきました。 ○テーブル「部品マスタ」 部品番号 部品名 規定作業日数 ○テーブル「カレンダー」 年月日 営業日フラッグ (営業日フラッグは、営業日が1、休業日を0としています) ○テーブル「受注マスタ」 受注ID 部品番号 作業開始日 作業完了予定日 上記「部品マスタ」と「受注マスタ」をもとにクエリを作成し、入力フォームを作成しました。 ○フォーム「受注データ入力」 (入力)受注ID (入力)部品番号 (入力)作業開始日 (表示)部品名 (表示)規定作業日数 (計算)作業完了予定日 翌営業日とか3営業日後という風に納期などを計算する方法は見つけられたのですが、そこから応用をきかすことができなくて、行き詰ってしまいました・・。どなたか助けていただける方、よろしくお願いします。
- melon100
- お礼率23% (3/13)
- オフィス系ソフト
- 回答数5
- ありがとう数1
- みんなの回答 (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とかを使ってできればと思っています。
関連するQ&A
- アクセスで2つのコードから1つのデータを引き出したい
アクセス2003で工程管理のデータベースを作っています。うまく説明できなくて申し訳ないのですが、ふたつのコードからひとつのデータを引き出したいのですが、どうしたらよいか分からないので、どなたか教えてください。 ○テーブル「部品マスタ」 部品番号 部品名 ○テーブル「工程マスタ」 工程番号 工程名 ○テーブル「受注マスタ」 受注番号 部品番号 工程番号 ○テーブル「日数マスタ」 日数ID 部品番号 工程番号 日数 となっています。 テーブル「受注マスタ」の部品番号と工程番号からテーブル「日数マスタ」にある日数を引き出したいのですが、方法が分からず質問しました。
- ベストアンサー
- オフィス系ソフト
- Access2000での日数の計算
データベースの素人です。訳あって、データベースを作成することになりました。 ソフトはAccess2000を使用しております。 例えば「本体」というテーブルのフィールド項目に ID 荷物の受注日 荷物の発送日 所要日数 という項目があります。 同じくフォームにもこのとおりの項目があります。 「荷物の受注日」と「荷物の発送日」を手入力するのですが、「所要日数」だけは自動で計算をしたいのです。 マニュアル本とにらめっこをしながら、当初、フォーム上の「所要日数」の入力場所のプロパティ→データタブのコントロールソースに DateDiff("y",[荷物の受注日],[荷物の発送日]) と入力しました。 これで確かにフォームに入力した日付データに対して「所要日数」も表示されました。 しかし、「本体」テーブルのデータには、手入力した日付データは登録されているものの、「所要日数」は登録されていませんでした。 手入力した日付データを残したまま、今度はクエリを用いて「本体」テーブルのクエリを作ってみました。 クエリにて「所要日数」のところのフィールドに 所要日数: DateDiff("y",[本体]![荷物の受注日],[本体]![荷物の発送日]) と入力して、クエリを実行すると、確かにクエリの中の「所要日数」のところにはデータが出てきます。 しかしながら「本体」テーブルにも、フォーム上にもデータは出てきません。 いったいどのようにすれば、フォーム上にて手入力をした日付データに対して、所要日数を自動で計算し、そのデータが「本体」テーブルにも記録されるのでしょうか? どなたかお分かりになるかた、宜しくお願いいたします。
- 締切済み
- オフィス系ソフト
- SQL Server 2005 Expressで営業日の数え方
Visual Web Developer 2005 Express始めたばかりの初心者です。 簡単な受注管理のDBを作成しているのですが、営業日の数え方について教えてください。 test01テーブルに受注日という項目があり、経過日数という項目で受注日と今日の日付の差を出しています。 SELECT (int,GETDATE()-jutyubi) AS Expr1,jutyubi FROM test01 受注日から今日までの差を表示するのではなく、受注日から今日までの営業日を求めたいのですがどのようにすればよいでしょうか。 営業日は土日の除いて考え、国民の休日が設定できればよりいいです。 エクセルのNETWORKDAYS関数のようなイメージをしています。よろしくお願いいたします。
- ベストアンサー
- SQL Server
- Accessで、横長のテーブルを縦長に作り変えたい
下のような項目の、「銀行休日マスタテーブル」が存在します。 1レコードの中に、 銀行、年、月をキーとして、1日~31日の休日・営業日の情報を格納しています。 (「1日」~「31日」の0と1は営業日と休日を表すフラグです。) 銀行コード| 年 |月|日数|1日|2日|・・・・30日|31日| 0001 |2006|01| 31| 1| 0|・・・・ 1| 0| このテーブルを、以下のように、 銀行コード・年・月・日をキーとしたテーブルに作り変えたいのですが いいアイデアはあるでしょうか。 銀行コード| 年 |月|日|営業日フラグ| 0001 |2006|01| 1| 1| 0001 |2006|01| 2| 0| ・ ・ ・ 0001 |2006|01|30| 1| 0001 |2006|01|31| 0|
- ベストアンサー
- オフィス系ソフト
- フォーム入力、更新後処理で指定テーブルへのバックアップ方法
受注DBを作成しています。 テーブル1:受注テーブル (受注日,受注訂正日,得意先名・・) テーブル2:受注テーブル履歴テーブル (受注日,受注訂正日,得意先名・・) フォーム :受注入力フォーム があります。 受注を受けたら受注入力フォームへ入力します。 受注が変更になった場合、受注訂正日に入力後、 最初に入力したデータを受注テーブル履歴テーブル へ自動的にバックアップをとりたいと考えています。 更新後処理で、「値の代入」で処理するのでしょうか?イベントプロシージャーで入力するのでしょうか? バックアップは、初回受注入力フォームへ入力した データをすべてバックアップしておきたいと 考えております。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- ACCESSで計算結果を格納する方法
いつもおせわになっております。同じ案件名で質問したのですが、説明がつたなすぎたので質問しなおします。 メインのテーブルの構造は、受注先、作業項目、受注名(主キー)、担当者(これはなくそうと思っています)、受注名、注文日、完了日、(見積金額、請求金額、入金金額、外注支払い、粗利益)とあります。 サブのテーブルは、ひとつの案件の中に小分けの案件があるので、 ナンバー(オートナンバー/主キー)受注名、サブタイトル、ページ数、希望金額、取り掛かり日、作成終了日、提出日、締め切り日、支払先1、支払金額1(支払先1への支払い金額です)、支払先2、支払金額2、支払先3、支払い金額3、請求日、請求金額、入金日、入金日、見積もり、調査、報告書(最後の三つは、やったかどうかのチェック用のチェックボックスです) メインテーブルとサブテーブルはたしか受注名で繋がっています。 メインテーブルの単票フォーム内のサブフォームに、サブテーブルを帳票形式で表示して、個別案件を入力するようにしました。サブフォーム内のレコードの各案件の希望金額の合計や支払金額、粗利などを計算して(Sumや足し算引き算)、サブフォーム内のテキストボックスに表示させています。これが、メインテーブルの()の中身にあたります。 これをなんとかして(サブフォーム内のコマンドボタンを押すなど?して)計算結果をメインフォームのフィールドに転送したいのですが、方法はないでしょうか? できれば、いまアクセスのサイトや本を見過ぎていっぱいいっぱいなのでわかりやすく説明していただければ幸いです。 。
- 締切済み
- オフィス系ソフト
- yahooの営業日とは
こんにちは。 先日、yahooウォレットを申し込んださい、 3営業日から一週間の間にメールがyahooから送られてくるとのことでしたが 日数がたっても届きません。 yahooの営業日とはどうなっているのでしょうか?
- 締切済み
- オークション
- 非営業日のレコードを前営業日のレコードを元に補う
営業日のみデータが入力されているテーブルを元に 非営業日(土日祝祭日など)のレコードを前営業日の レコードを参照して補いたいと考えています。 例) 主キーがDT,NMのテーブルT1 に営業日のみデータが入力されている DT NM FEE ========== 4/1 A 3 4/1 B 5 4/4 A 9 4/4 B 10 ↓ これをもとに、非営業日分(4/2,4/3)のレコードを 前(直近)営業日のデータで補った結果を作成したい。 Q1 DT NM FEE REF ========== 4/1 A 3 4/1 B 5 4/2 A 3 4/1 ←前営業日のレコードをもとに生成 4/2 B 5 4/1 ←前営業日のレコードをもとに生成 4/3 A 3 4/1 ←前営業日のレコードをもとに生成 4/3 B 5 4/1 ←前営業日のレコードをもとに生成 4/4 A 9 4/4 B 10 ちなみに列REFは何日のデータを参照して レコードが生成されたかを表示する列です。 営業日にフラグを立てたカレンダーテーブルと結合 させてみたりしたのですが、どうもうまくいきません。 環境はACCESSです。 わかりにくい説明で申し訳ありませんが、 よろしくお願いいたします。
- 締切済み
- その他(データベース)
- Accessでのフォーム入力エラー
顧客管理を 顧客マスタ 受注明細 入金明細のテーブルを作成し、リレーションシップの設定をしてあります。テーブルには、この形で入力できるのですが、フォームをウィザードを使って作成(サブフォームのリンクされたフォーム)しました。 新規入力することができません。「テーブル’顧客マスタ’にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更をおこなうことはできません。」のメッセージが出ます。 どうしていいのか、わかりません。教えてください。
- ベストアンサー
- オフィス系ソフト
- Access 近似する日付の検索
任意の日付を入れるとその日が営業していればその日の特売品、その日が営業日でなければ次に営業する日の特売品を抽出するクエリ(SQL、関数など)を教えてください。 たとえば、下記のテーブルAがあったときに、次のように動作します。 2000/01/01と入力→2000/01/01、たまごと表示 2000/01/02と入力→2000/01/04、トマトと表示←次営業日 2000/01/03と入力→2000/01/04、トマトと表示←次営業日 2000/01/04と入力→2000/01/04、トマトと表示 テーブルA --営業日------特売品--- 2000/01/01--たまご 2000/01/04--トマト 2000/01/05--ピーマン 2000/01/06--にんじん ちなみに営業日と曜日は関係なく、不定期です。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
補足
やってみましたが、「コンパイルエラー 引数は省略できません」とでてしまいました。日付と稼働日は、それぞれ年月日と営業日フラッグに置き換えればいいのでしょうか?