回答編集履歴
4
推敲
answer
CHANGED
@@ -68,4 +68,4 @@
|
|
68
68
|
更新対象のデータを参照するような作りだと、#エラーが表示される状況を回避するのは難しいかもしれません。
|
69
69
|
イベント処理で、計算した結果を書き込むようにする方が確実だと思います。
|
70
70
|
[レコード単位の編集イベント](https://tsware.jp/study/vol5/event_07.htm)
|
71
|
-
今回の場合だと、AfterUpdateイベントで、測定量を
|
71
|
+
今回の場合だと、AfterInsertやAfterUpdateイベントで、測定量を編集するようにすれば良いと思います。
|
3
追記
answer
CHANGED
@@ -61,4 +61,11 @@
|
|
61
61
|
;
|
62
62
|
```
|
63
63
|
ただ、このようにネストさせても、データ件数が多く集計などが絡む場合に演算項目が確定しないケースもあります。
|
64
|
-
その場合は、ネストしている部分をワークテーブルに結果を書き出すなどして、値を確定させると改善します。
|
64
|
+
その場合は、ネストしている部分をワークテーブルに結果を書き出すなどして、値を確定させると改善します。
|
65
|
+
|
66
|
+
追記
|
67
|
+
--
|
68
|
+
更新対象のデータを参照するような作りだと、#エラーが表示される状況を回避するのは難しいかもしれません。
|
69
|
+
イベント処理で、計算した結果を書き込むようにする方が確実だと思います。
|
70
|
+
[レコード単位の編集イベント](https://tsware.jp/study/vol5/event_07.htm)
|
71
|
+
今回の場合だと、AfterUpdateイベントで、測定量を更新するようにすれば良いと思います。
|
2
追記
answer
CHANGED
@@ -32,4 +32,33 @@
|
|
32
32
|
AND 履歴.所属 =[Forms]![入力画面]![所属選択]
|
33
33
|
;
|
34
34
|
```
|
35
|
-
それから、履歴テーブルに、(種類,所属,日付,ID)のインデックスを作成するとさらに性能が改善されるかもしれません。
|
35
|
+
それから、履歴テーブルに、(種類,所属,日付,ID)のインデックスを作成するとさらに性能が改善されるかもしれません。
|
36
|
+
|
37
|
+
ネスト構成のSQLは以下です。
|
38
|
+
ネストしている部分(step1・2)をそれぞれクエリーにしても可
|
39
|
+
```SQL
|
40
|
+
SELECT Step2.*
|
41
|
+
, Year(日付) As 移充填年
|
42
|
+
, Month(日付) As 移充填月
|
43
|
+
, Step2.規定量 AS F1規定量
|
44
|
+
, Step2.測定量 AS F1測定量
|
45
|
+
, step2.充填規定量 As 規定量
|
46
|
+
, Nz(総重量 - 前回総重量, 0) As 測定量
|
47
|
+
FROM (
|
48
|
+
SELECT Step1.*
|
49
|
+
, DLookUp("総重量","履歴","ID=" & 前回ID) As 前回総重量
|
50
|
+
FROM (
|
51
|
+
SELECT 履歴.*
|
52
|
+
, DLookup("規定量", "充填量", "発注='" & 履歴.発注 & "'") As 充填規定量
|
53
|
+
, Nz(DMax("ID", "履歴", "ID < " & 履歴.ID & " AND 日付=#" & 日付 & "# AND 種類='" & 種類 & "' AND 所属='" & 所属 & "'"), 0) As 前回ID
|
54
|
+
FROM 履歴
|
55
|
+
WHERE Year(日付) =[Forms]![入力画面]![年選択]
|
56
|
+
AND Month(日付)=[Forms]![入力画面]![月選択]
|
57
|
+
AND 履歴.種類 =[Forms]![入力画面]![種類選択]
|
58
|
+
AND 履歴.所属 =[Forms]![入力画面]![所属選択]
|
59
|
+
) As Step1
|
60
|
+
) As Step2
|
61
|
+
;
|
62
|
+
```
|
63
|
+
ただ、このようにネストさせても、データ件数が多く集計などが絡む場合に演算項目が確定しないケースもあります。
|
64
|
+
その場合は、ネストしている部分をワークテーブルに結果を書き出すなどして、値を確定させると改善します。
|
1
訂正
answer
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
, 履歴.担当者
|
22
22
|
, 履歴.総重量
|
23
23
|
, DLookup("規定量", "充填量", "発注='" & 履歴.発注 & "'") As 規定量
|
24
|
-
, Nz(DMax("ID", "履歴", "ID < " & ID & " AND 日付=#" & 日付 & "# AND 種類='" & 種類 & "' AND 所属='" & 所属 & "'"), 0) As 前回ID
|
24
|
+
, Nz(DMax("ID", "履歴", "ID < " & 履歴.ID & " AND 日付=#" & 日付 & "# AND 種類='" & 種類 & "' AND 所属='" & 所属 & "'"), 0) As 前回ID
|
25
25
|
, DLookUp("総重量","履歴","ID=" & [前回ID]) As 前回総重量
|
26
26
|
, Nz(総重量 - [前回総重量], 0) As 測定量
|
27
27
|
FROM 履歴 INNER JOIN 担当者
|