Microsoft Access 掲示板

作業終了時間の計算

16 コメント
views
4 フォロー

アクセス初心者です。

画像1のような出荷進捗のフォームを作成したいと思っております。
[出荷日][取引先CD][取引先名][予定][未完了][進捗]のフィールドまでは完成してます。
新たに[終了時間]を追加したいと思ってます。

画像2の生産性(1時間に出荷できる数)が店舗ごとに違います。
画像3の時間帯によって出荷する人数が違います。
画像2と3に関してはテーブルを作ろうかと思ってますがとくにこだわりはないです。

[出荷日][取引先CD][取引先名][予定][未完了][進捗]のテーブルは外部データからリンクしてます。
更新処理をすれば常に変化します。

画像2と画像3は自分で自由に設定できるので簡単に変更出来るやり方があれば助かります。
毎日変更する予定です。

画像では店舗A~店舗Cまでですが実際はもっとあります。
店舗Aが終わってから店舗B、店舗Bが終わってから店舗Cの順番に出荷します。

現在の時刻から終了時間を出せるようになれば助かります。
よろしくお願いします。

画像1
画像2
画像3

もんぞう
作成: 2021/05/08 (土) 19:09:51
通報 ...
1
りんご 2021/05/10 (月) 21:27:30 48103@0e907

終了時刻を導き出すために、現在時刻を関数で表現するには、どうすればいいかという質問ですか?

2
もんぞう 2021/05/10 (月) 22:22:39 62ea7@f778d

りんごさんへ

日本語が分かりにくくてすいません。
現在の時刻から終了時刻を表現できればと思っております。
8時00分スタートで1時間で終わる予定ならば終了時刻は9時00分になります。
進捗状況はリアルタイムで更新していきます。
基本的に予定と同じになることはありません。
あくまでも予想の終了時刻の計算をしたいと思っております。
店舗によって生産性が変わったり、時間によって人数が変わります。
やり方などはおまかせします。
ここでするような質問でなかったら流してください。

3
りんご 2021/05/10 (月) 23:12:27 48103@0e907 >> 2

ええと、私も素人なので、大きなことは言えないのですが、次のような方針はどうですか?
現在時刻の項目を追加して、日時/日付関数を設定。(更新するたびに、自動入力)
残り時間の項目を追加して、計算式(未完了の値÷生産性の値)を設定する。
終了時間の項目は、計算式(現在時刻の項目+残り時間)を設定、導き出す。
的外れでしたら、ごめんなさい。

4
もんぞう 2021/05/11 (火) 17:37:49 62ea7@f778d

りんごさんへ

アドバイスありがとうございます。
私はド素人ですのでどんなアドバイスでも助かります。
一応、こんな感じで作ってみました。
画像1
りんごさんのイメージと違ったらすいません。

現在時刻: Time()
残り時間: (([未完了]/([生産性]10))60)/1440
終了時間: [現在時刻]+[残り時間]

問題点1
残り時間を出すときの人数を今回は10人固定にしてます。
時間で変動できるような式にしたいです。
1時間後の出荷なら1時間後の人数で計算、
2時間後の出荷なら2時間後の人数で計算できるようにしたいです。

具体的な例として、9時~10時が5人で10時~11時が10人とします。
9時スタートで店舗Aの出荷が9時30分に終わるとします。
店舗Bの出荷は9時30分~10時は人数5人で計算して、10時から11時までは10人で計算したいです。
生産性は店舗ごとに変わります。
この計算を例えば9時の時点で最後の店舗までできるようにしたいです。

問題点2
1つまえのレコードの終了時間に残り時間をプラスして終了時間をだしたいです。

今週は実際にアクセスで試せるのが金曜日以降になります。
質問等ありましたら答えることはできます。

5
りんご 2021/05/14 (金) 03:20:47 48103@0e907 >> 4

 未完了のログと持ち時間のログを考えてみました。持ち時間は、9:00~10:00ならば、60とします。
以下、フォームのイメージです。
 ① 出荷日を選ぶ。
 ② 店舗名を選んで登録。
未完了テーブルのリストボックス
1,店舗A,500
2,店舗B,1000
   ③ チームを選んで登録。
持ち時間テーブルのリストボックス
1,チーム9時 ,60
2,チーム10時,60
3,チーム11時,60

6
りんご 2021/05/14 (金) 03:43:15 48103@0e907 >> 4

 未完了テーブルのリストボックス
 1,店舗A,500
 2,店舗B,1000
 持ち時間テーブルのリストボックス
 1,チーム9時 ,60
 2,チーム10時,60
 3,チーム11時,60
  ④リストボックスから、店舗A、チーム9時、未完了500、持ち時間60を選んで登録。
 以下、フォームの連結クエリのイメージです。
 …,店舗名,チーム名,未完了,持ち時間,最大出荷数,出荷数,出荷時間,未完了残り,持ち時間残り
 1,店舗A,チーム9時 ,500 ,60,以降、計算で導出。

7
りんご 2021/05/14 (金) 04:02:54 48103@0e907 >> 4

店舗A,未完了残り0を登録
未完了テーブルのリストボックス
1,店舗A,500
2,店舗B,1000
3,店舗A,0
チーム9時,持ち時間残り30を登録。
持ち時間テーブルのリストボックス
1,チーム9時 ,60
2,チーム10時,60
3,チーム11時,60
4.チーム9時 ,30
出荷時間のログ
…,店舗名,チーム名,未完了,持ち時間,最大出荷数,出荷数,出荷時間,未完了残り,持ち時間残り
1,店舗A,チーム9時 ,500 ,60,最大出荷数,500,30,0,30

8
りんご 2021/05/14 (金) 04:21:22 48103@0e907 >> 4

⑦リストボックスから、とりあえず泥臭く選んで登録する
未完了テーブルのリストボックス
1,店舗A,500
2,店舗B,1000
3,店舗A,0
持ち時間テーブルのリストボックス
1,チーム9時 ,60
2,チーム10時,60
3,チーム11時,60
4,チーム9時 ,30

…,店舗名,チーム名,未完了,持ち時間,最大出荷数,出荷数,出荷時間,未完了残り,持ち時間残り
1,店舗A,チーム9時 ,500 ,60,最大出荷数,500,30,0,30
2,店舗B,チーム9時 ,1000,30,

9
もんぞう 2021/05/14 (金) 17:41:14 62ea7@f778d

りんごさんへ

たくさんのアドバイスありがとうございます。
難しそうですが、明日以降に試してみたいと思います。

10
りんご 2021/05/14 (金) 18:31:39 48103@0e907

終了時間は、開始時間に出荷時間を加える計算を考えてみました。
開始時間=9:00、終了時間=
開始時間=9:00、終了時間=9:30
開始時間=9:30、終了時間=9:30
開始時間=9:30、終了時間=11:00
まずは、先程のフォームの連結クエリをもとに、出荷時間のクエリを作ります。
店舗名,チーム名,出荷時間
店舗A,チーム9時 ,30
店舗B,チーム9時 ,30
店舗B,チーム10時,60
店舗C,チーム11時,……
店舗の終了時間を計算するときは、店舗名でグループ化、出荷時間の合計を集計しましょう。

11
りんご 2021/05/14 (金) 18:33:33 48103@0e907 >> 10

以下、フォームのイメージです。
①開始時間を入力する。店舗を選ぶ。
・出荷時間のリストボックス
店舗A,30
店舗B,90
店舗C,…
・開始時間のテキストボックス:9:00
・終了時間のテキストボックス:
…,店舗名,開始時間,終了時間
1,

終了時間を計算する。
・出荷時間のリストボックス
店舗A,30
店舗B,90
店舗C,…
・開始時間のテキストボックス:9:00
・終了時間のテキストボックス:9:30
…,店舗名,開始時間,終了時間
1,

③店舗名、開始時間、終了時間を計算。
・出荷時間のリストボックス
店舗A,30
店舗B,90
店舗C,……
・開始時間のテキストボックス:9:00
・終了時間のテキストボックス:9:30
…,店舗名,開始時間,終了時間
1,店舗A,9:00,9:30

④開始時間のテキストボックスに終了時間を入力
・出荷時間のリストボックス
店舗A,30
店舗B,90
店舗C,……
・開始時間のテキストボックス:9:30
・終了時間のテキストボックス:9:30
…,店舗名,開始時間,終了時間
1,店舗A,9:00,9:30
2,

12
もんぞう 2021/05/15 (土) 19:21:58 62ea7@f778d

りんごへ

フォームに関してよく分かってない部分があり、テーブルとクエリで作成する感じでもよろしいでしょうか?
理解しにくい部分があるのですいません。

私の情報を整理します。
まず外部データのリンクのテーブルがあります。
とりあえずテーブルAにします。
[取引先CD] [取引先名]
[予定] [未完了]
[進捗]
上記のフィールドをテーブルAからクエリで抽出してます。
とりあえずクエリAにします。
どう言えばいいのかわかりませんが常に最新の情報に更新されます(手動)。

前回クエリAに追加したのが下記です。
現在時刻: Time()
残り時間: (([未完了]/([生産性]10))60)/1440
終了時間: [現在時刻]+[残り時間] [生産性]:テーブルを新たに作って追加しました。

ここまでが前回までです。

新たに未完了テーブルと持ち時間テーブルを追加する感じでよろしいでしょうか?
まったく見当違いのことを言ってたらすいません。

未完了テーブルの取引先名と未完了はクエリAにあるのですが必要でしょうか?

追加するフィールドについてですが、
チーム名:持ち時間テーブル
持ち時間:持ち時間テーブル
最大出荷数
出荷数
出荷時間
未完了残り
持ち時間残り

最大出荷数、出荷数、出荷時間、未完了残り、持ち時間残りの式を教えてもらえたら助かります。

終了時間に関してはまた別の機会に質問します。

大量に書き込んでいただいたのに方向性を変えて申し訳ありません。

13
りんご 2021/05/16 (日) 17:34:20 48103@0e907

 「フォームを使わない、テーブルとクエリだけで作る。」という方針であれば、新たに未完了のテーブルと持ち時間のテーブルを追加する必要はないです。

 新たにテーブルを作ります。追加するフィールドは、店舗名,チーム名,未完了,持ち時間、そして、下記の計算フィールドです。
・最大出荷数:[生産性]×[人数]×持ち時間
・出荷数:IIf([最大出荷数]>[未完了],[未完了],[最大出荷数])
・出荷時間:[出荷数]÷([生産性]×[人数])
・未完了残り:[未完了]-[出荷数]
・持ち時間残り:[持ち時間]-[出荷時間]

 計算フィールドの結果に応じて、店舗名、チーム名、未完了、持ち時間を自分で探して入力します。フォームを作ると、探す手間が少しだけ楽になるでしょう。テーブルとクエリだけで作るならば、たぶん、Excelで作るのが正解ではないでしょうか?
 クエリを頑張れば、ある程度、自動化出来るけれど、完成出来ずに重くなっただけ、なんてことも。

14
もんぞう 2021/05/16 (日) 18:35:24 62ea7@f778d

りんごさんへ

式の詳細ありがとうございす。
明日試してみます。

現在使ってるのが下の画像のようなものを使っております。
画像1

テーブル(外部データリンク)→クエリ→フォーム(サブフォームも)という流れでリアルタイムで更新できる仕組みを作ってます。
作業終了時間というフィールドを新たに追加したく今回質問させていただきました。
ただ作業生産性という少し専門的な分野の計算式が必要になってきますのでアクセスの質問掲示板を利用してもいいのか?という疑問は今もあります。
生産性と時間帯の人数(シフト)は基本的に固定で決まってますので、その部分は入力する予定です。
極端な話ですが一か月分入力することも可能です。
シフトのイレギュラーさえなければ一か月に一回のメンテでできればと考えております。
私のイメージとしてはクエリの部分で計算式を入れて作業終了時間を出せればと考えております。
そんな式が存在するのか?処理はできるのか?疑問は多々あります。
私の知識、技術不足のせいでうまく伝わっていないのかもしれませんので再度理想の形を説明させていただきました。

Excelで作るのが正解ではないでしょうか?
具体的にはわかりませんがExcelも必要であれば使うのは問題ありません。
更新すれば自動で作業終了時間がでる仕組みであれば他のこだわりは一切ありません。

いろいろと考えていただきありがとうございます。

15
りんご 2021/05/16 (日) 19:12:35 48103@0e907 >> 14

ググっていたら、時間の計算に使えるかもしれないサイトがありました。

■T'sWare Access Tips #061 〜カレントレコードまでの累計を取得するクエリー〜
tsware

私の方からは、これくらいですね。頑張って👍

16
もんぞう 2021/05/17 (月) 18:57:13 62ea7@f778d

りんごさんへ

計算式の持ち時間が問題になりそうです。
出荷数の部分の式でIIfを使う発想はなかったので参考になります。
時間の計算の参考になりそうなサイトまで紹介していただきありがとうございます。
いろいろとありがとうございました。

引き続きアドバイス出来る方お願いします。
一か月ぐらいは定期的に覗きに来たいと思います。