ACCESSのクエリで時間の合計時間を出した時に変な数値になる。
- 評価 0
- クリップ 0
- VIEW 209
ACCESSのクエリの集計を使って時間の合計を出しました。
●●:●●となっていて、何時何分だけの合計時間を足していったクエリを作成したいのですが、
結果的に【6.94444444444442E-03】という感じになってしまいます。
データ型は【日付/時刻型】で
書式【hh\時nn\分】としていて、それ同士を足し合わせているのですが、、、
この辺りのデータ型の部分に何か間違いがあるような気がするのですが、分からず
もしよろしければご教授頂けますと幸いです。
VBAの式
・開始時間:8:00
・終了時間:8:17
と入っていて、黄色の止まった場所にも開始時間、終了時間にはそれが入っているのですが、
【Me.tx_合計時間.Value】には、1990/01/20と入っていて、時間差の分が出ません。
-
クリップを取り消します
-
質問の評価を上げたことを取り消します
-
質問の評価を下げたことを取り消します
checkベストアンサー
+1
Accessの 日付/時刻型 は日付と時刻を表すもので、時間を表すものではありません。
時刻と時間は別の概念というのは理解してますよね。(時刻は時間軸上の位置、時間は長さをあらわすものです。)
Accessには時間型というのはありませんので、テーブルに格納するときは分単位とか秒単位の数値に変換して格納することになります。書式【hh\時nn\分】としているとこうことは分単位で格納すればいいでしょう。
例えば、開始時刻 終了時刻 というのがあってそこから時間を計算する場合は、Datediff("n",[開始時刻],[終了時刻])
という式で分単位の時間に変換できます。これを集計することになります。
分単位の数値を hh時nn分という書式で表示するには、
[時間] \ 60 & "時" & [時間] Mod 60 & "分"
というような式で変換します。
Accessで時間を扱う場合の一例を提示しておきます。
(一つの例ですので他の方法もあります。)
テーブルに 開始時刻, 終了時刻 という日付/時刻型のフィールドがあるとします。
このテーブルからクエリを作成します。テーブル名は Tbl1 と仮定してます。
SELECT Tbl1.*, DateDiff("n",[開始時刻],[終了時刻]) As 時間 From Tbl1;
クエリ名は Qry1 と仮定します。
このクエリをフォームのレコードソースとします。このフォームで
開始時間:8:00
終了時間:8:17
と入力すると時間には、17 と分単位の数値が表示されます。
開始時間:8:00
終了時間:10:17
だと、137 と表示されます。137分という意味です。
これを、2時間17分と表示させたい場合は、テキストボックスを配置して、コントロールソースを下記のように設定します。
=[時間] \ 60 & "時間" & Format([時間] Mod 60, "00") & "分"
ここまでVBAは必要ありません。
この時間を集計クエリで集計したい場合もあると思います。その場合も時間を集計します。
SELECT
Sum([時間]) AS 時間計,
[時間計]\60 & "時間" & Format([時間計] Mod 60,"00") & "分" AS 時間計hn
FROM Qry1;
上記のクエリは全合計をだすように単純化してますが、必要に応じてグループ化してください。
時間計 には分単位の数値、時間計hn には h時間nn分という表示になります。
この式だと例えば、35時間17分 というような24時間以上の表示も可能です。
日付/時刻型ではこの表示は無理です。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.02%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼