回答編集履歴
4
推敲
test
CHANGED
@@ -138,4 +138,4 @@
|
|
138
138
|
|
139
139
|
[レコード単位の編集イベント](https://tsware.jp/study/vol5/event_07.htm)
|
140
140
|
|
141
|
-
今回の場合だと、AfterUpdateイベントで、測定量を
|
141
|
+
今回の場合だと、AfterInsertやAfterUpdateイベントで、測定量を編集するようにすれば良いと思います。
|
3
追記
test
CHANGED
@@ -125,3 +125,17 @@
|
|
125
125
|
ただ、このようにネストさせても、データ件数が多く集計などが絡む場合に演算項目が確定しないケースもあります。
|
126
126
|
|
127
127
|
その場合は、ネストしている部分をワークテーブルに結果を書き出すなどして、値を確定させると改善します。
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
追記
|
132
|
+
|
133
|
+
--
|
134
|
+
|
135
|
+
更新対象のデータを参照するような作りだと、#エラーが表示される状況を回避するのは難しいかもしれません。
|
136
|
+
|
137
|
+
イベント処理で、計算した結果を書き込むようにする方が確実だと思います。
|
138
|
+
|
139
|
+
[レコード単位の編集イベント](https://tsware.jp/study/vol5/event_07.htm)
|
140
|
+
|
141
|
+
今回の場合だと、AfterUpdateイベントで、測定量を更新するようにすれば良いと思います。
|
2
追記
test
CHANGED
@@ -67,3 +67,61 @@
|
|
67
67
|
```
|
68
68
|
|
69
69
|
それから、履歴テーブルに、(種類,所属,日付,ID)のインデックスを作成するとさらに性能が改善されるかもしれません。
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
ネスト構成のSQLは以下です。
|
74
|
+
|
75
|
+
ネストしている部分(step1・2)をそれぞれクエリーにしても可
|
76
|
+
|
77
|
+
```SQL
|
78
|
+
|
79
|
+
SELECT Step2.*
|
80
|
+
|
81
|
+
, Year(日付) As 移充填年
|
82
|
+
|
83
|
+
, Month(日付) As 移充填月
|
84
|
+
|
85
|
+
, Step2.規定量 AS F1規定量
|
86
|
+
|
87
|
+
, Step2.測定量 AS F1測定量
|
88
|
+
|
89
|
+
, step2.充填規定量 As 規定量
|
90
|
+
|
91
|
+
, Nz(総重量 - 前回総重量, 0) As 測定量
|
92
|
+
|
93
|
+
FROM (
|
94
|
+
|
95
|
+
SELECT Step1.*
|
96
|
+
|
97
|
+
, DLookUp("総重量","履歴","ID=" & 前回ID) As 前回総重量
|
98
|
+
|
99
|
+
FROM (
|
100
|
+
|
101
|
+
SELECT 履歴.*
|
102
|
+
|
103
|
+
, DLookup("規定量", "充填量", "発注='" & 履歴.発注 & "'") As 充填規定量
|
104
|
+
|
105
|
+
, Nz(DMax("ID", "履歴", "ID < " & 履歴.ID & " AND 日付=#" & 日付 & "# AND 種類='" & 種類 & "' AND 所属='" & 所属 & "'"), 0) As 前回ID
|
106
|
+
|
107
|
+
FROM 履歴
|
108
|
+
|
109
|
+
WHERE Year(日付) =[Forms]![入力画面]![年選択]
|
110
|
+
|
111
|
+
AND Month(日付)=[Forms]![入力画面]![月選択]
|
112
|
+
|
113
|
+
AND 履歴.種類 =[Forms]![入力画面]![種類選択]
|
114
|
+
|
115
|
+
AND 履歴.所属 =[Forms]![入力画面]![所属選択]
|
116
|
+
|
117
|
+
) As Step1
|
118
|
+
|
119
|
+
) As Step2
|
120
|
+
|
121
|
+
;
|
122
|
+
|
123
|
+
```
|
124
|
+
|
125
|
+
ただ、このようにネストさせても、データ件数が多く集計などが絡む場合に演算項目が確定しないケースもあります。
|
126
|
+
|
127
|
+
その場合は、ネストしている部分をワークテーブルに結果を書き出すなどして、値を確定させると改善します。
|
1
訂正
test
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
, DLookup("規定量", "充填量", "発注='" & 履歴.発注 & "'") As 規定量
|
46
46
|
|
47
|
-
, Nz(DMax("ID", "履歴", "ID < " & ID & " AND 日付=#" & 日付 & "# AND 種類='" & 種類 & "' AND 所属='" & 所属 & "'"), 0) As 前回ID
|
47
|
+
, Nz(DMax("ID", "履歴", "ID < " & 履歴.ID & " AND 日付=#" & 日付 & "# AND 種類='" & 種類 & "' AND 所属='" & 所属 & "'"), 0) As 前回ID
|
48
48
|
|
49
49
|
, DLookUp("総重量","履歴","ID=" & [前回ID]) As 前回総重量
|
50
50
|
|