teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

コード修正

2021/04/27 01:55

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -39,15 +39,14 @@
39
39
  この時間を集計クエリで集計したい場合もあると思います。その場合も時間を集計します。
40
40
 
41
41
  ```sql
42
+ SELECT
42
- Select Sum([時間]) As 時間計 From Qry1;
43
+ Sum([時間]) AS 時間計,
44
+ [時間計]\60 & "時間" & Format([時間計] Mod 60,"00") & "分" AS 時間計hn
45
+ FROM Qry1;
43
46
  ```
44
47
  上記のクエリは全合計をだすように単純化してますが、必要に応じてグループ化してください。
45
48
 
46
- 上記も分単位の合計ですのでhh時間nn分表示にするには、上記と同様に式を使います。
49
+ 時間計 には分単位の数値、時間計hn には h時間nn分という表示になります。
47
- 集計クエリを元にしたフォームやレポート上のテキストボックスのコントロールソースを下記のように設定します。
48
50
 
49
- ```
50
- =[時間計] \ 60 & "時間" & Format([時間計] Mod 60, "00") & "分"
51
- ```
52
- この式だと例えば、35時間17分 というよう24時間以上の表示も可能です。
51
+ この式だと例えば、35時間17分 というよう24時間以上の表示も可能です。
53
52
  日付/時刻型ではこの表示は無理です。

3

誤字修正

2021/04/27 01:55

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -19,7 +19,7 @@
19
19
  ```sql
20
20
  SELECT Tbl1.*, DateDiff("n",[開始時刻],[終了時刻]) As 時間 From Tbl1;
21
21
  ```
22
- クエリ名は Qry1 仮定します。
22
+ クエリ名は Qry1 仮定します。
23
23
  このクエリをフォームのレコードソースとします。このフォームで
24
24
  開始時間:8:00
25
25
  終了時間:8:17

2

説明追記

2021/04/27 01:45

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -6,5 +6,48 @@
6
6
  例えば、開始時刻 終了時刻 というのがあってそこから時間を計算する場合は、`Datediff("n",[開始時刻],[終了時刻])` という式で分単位の時間に変換できます。これを集計することになります。
7
7
 
8
8
  分単位の数値を hh時nn分という書式で表示するには、
9
- `[時間] \ 60 & "" & [時間] Mod 60 & "分"`
9
+ `[時間] \ 60 & "" & [時間] Mod 60 & "分"`
10
- というような式で変換します。
10
+ というような式で変換します。
11
+
12
+ ---
13
+ Accessで時間を扱う場合の一例を提示しておきます。
14
+ (一つの例ですので他の方法もあります。)
15
+
16
+ テーブルに 開始時刻, 終了時刻 という日付/時刻型のフィールドがあるとします。
17
+ このテーブルからクエリを作成します。テーブル名は Tbl1 と仮定してます。
18
+
19
+ ```sql
20
+ SELECT Tbl1.*, DateDiff("n",[開始時刻],[終了時刻]) As 時間 From Tbl1;
21
+ ```
22
+ クエリ名は Qry1 は仮定します。
23
+ このクエリをフォームのレコードソースとします。このフォームで
24
+ 開始時間:8:00
25
+ 終了時間:8:17
26
+ と入力すると時間には、17 と分単位の数値が表示されます。
27
+
28
+ 開始時間:8:00
29
+ 終了時間:10:17
30
+
31
+ だと、137 と表示されます。137分という意味です。
32
+ これを、2時間17分と表示させたい場合は、テキストボックスを配置して、コントロールソースを下記のように設定します。
33
+
34
+ ```
35
+ =[時間] \ 60 & "時間" & Format([時間] Mod 60, "00") & "分"
36
+ ```
37
+ ここまでVBAは必要ありません。
38
+
39
+ この時間を集計クエリで集計したい場合もあると思います。その場合も時間を集計します。
40
+
41
+ ```sql
42
+ Select Sum([時間]) As 時間計 From Qry1;
43
+ ```
44
+ 上記のクエリは全合計をだすように単純化してますが、必要に応じてグループ化してください。
45
+
46
+ 上記も分単位の合計ですので、hh時間nn分表示にするには、上記と同様に式を使います。
47
+ 集計クエリを元にしたフォームやレポート上のテキストボックスのコントロールソースを下記のように設定します。
48
+
49
+ ```
50
+ =[時間計] \ 60 & "時間" & Format([時間計] Mod 60, "00") & "分"
51
+ ```
52
+ この式だと例えば、35時間17分 というように24時間以上の表示も可能です。
53
+ 日付/時刻型ではこの表示は無理です。

1

書式改善、式の間違い修正

2021/04/27 01:44

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Accessには時間型というのはありませんので、テーブルに格納するときは分単位とか秒単位の数値に変換して格納することになります。書式【hh\時nn\分】としているとこうことは分単位で格納すればいいでしょう。
5
5
 
6
- 例えば、開始時刻 終了時刻 というのがあってそこから時間を計算する場合は、Datediff("m",[開始時刻],[終了時刻]) という式で分単位の時間に変換できます。これを集計することになります。
6
+ 例えば、開始時刻 終了時刻 というのがあってそこから時間を計算する場合は、`Datediff("n",[開始時刻],[終了時刻])` という式で分単位の時間に変換できます。これを集計することになります。
7
7
 
8
8
  分単位の数値を hh時nn分という書式で表示するには、
9
9
  `[時間] \ 60 & "分" & [時間] Mod 60 & "分"`