Microsoft Access 掲示板

時間の計算について教えてください / 1

5 コメント
views
4 フォロー
1
hiroton 2024/03/21 (木) 13:29:17 0c567@f966d

数値に見えるテキストを計算させると数値として扱ってくれるのでそこは問題ないでしょう。ただし、時分をそのまま並べているのでそのまま数値計算させるわけにはいきません

入力不備を考慮して4桁(以上)に合わせる

[月始] & "0000"

時分を分け、分を時にする

時  :Left([月始] & "0000",2)
分->時:Mid([月始] & "0000",3,2)/60

[月終]が0時を超えてしまうようなときは24を超えた入力をするようにすればいいんですが(25時00分など)簡易的に計算するのであれば

([月終時]+24-[月始時]) Mod 24

で、できます。Mod演算子は余りを求める演算子で、負の値にならないよう24を加算しておいて、24をオーバーした分はMod演算子で捨てるようにしています

※簡易計算なので1日の労働時間が24時間以上になる場合は正確な数値になりません

これらを組み合わせると、

(Left([月終] & "0000",2)+Mid([月終] & "0000",3,2)/60)+24-(Left([月始] & "0000",2)+Mid([月始] & "0000",3,2)/60)) Mod 24-[月休]/60

で計算できます

通報 ...
  • 3

    わかりやすく解説していただいてありがとうございます。上記でエラーが出てしまったので
    上記の式をチャットGPTに貼って相談したところ、

    月時: IIf(TimeValue([月終])>TimeValue([月始]),((Hour(TimeValue([月終]))-Hour(TimeValue([月始])))60+Minute(TimeValue([月終]))-Minute(TimeValue([月始])))-[月休],((Hour(TimeValue([月終]))-Hour(TimeValue([月始])))60+Minute(TimeValue([月終]))-Minute(TimeValue([月始])))+IIf(TimeValue([月終])>TimeValue([月始]),0,24*60)-[月休])/60

    こんなふうにすることで時間を表示させることが出来ました。

    ところが、別の質問になってしまいますが、この結果をフォームに表示させようとすると
    [Q実労働時間クエリ]![月時]

    Name?というエラーになってしまいます。

    何か考えられる原因等ありますでしょうか。

  • 5
    hiroton 2024/03/22 (金) 11:02:05 0858e@f966d >> 1

    TimeValue 関数

    その計算式でなぜうまくいくのかhirotonには理解できません

    hirotonは段階を追って処理を提示していますが、どの部分でエラーになりますか?
    クエリで各段階をそれぞれフィールドにして確認してみてください。解説の都合で[月終時][月始時]と適当に名前を作っていますのでうまいこと解釈していただくか、分からなければ質問してください


    この結果をフォームに表示させようとすると
    [Q実労働時間クエリ]![月時]

    Name?というエラーになってしまいます。

    フォームのレコードソース、表示させようとしているコントロールの種類(テキストボックスやコンボボックスなど)、そのコントロールのコントロールソースを確認してください

    レコードソースに指定されているソースに[Q実労働時間クエリ]![月時]という名前のフィールドは含まれていますか?普通はこのような名前のフィールドはないと思います