テーブルは次のようになります。
part value
BAC 102
BS1 275
MAV 425
BAC 519
BSF 653
BAC 1072
結果は次のようになります。
パート BAC の場合
part value difference
BAC 102 102
BAC 519 417
BAC 1072 553
値が適切であることを除いて、関係はありません。
次の SQL ステートメントを使用しましたが、"WHERE" のように部分的にフィルタリングされていないため、結果は役に立たず、最初の行には差分 102 の値が含まれているはずですが、空です。
SELECT ABS(T2.value - T1.value) AS Difference, T1.Part,T1.value,
FROM table AS T1 RIGHT JOIN table AS T2 ON
T2.report = T1.Report+ 1
WHERE (((T1.part)=[Forms]![Parts]![Part]));
アップデート:
@Tom Collins の機能に追加しました
Function GetDiff(CurrPart As String, CurrValue As Long) As Long
Static LastPart As String
Static LastValue As Long
If CurrPart <> LastPart Then
LastValue = 0
LastPart = CurrPart
End If
If LastValue = CurrValue Then
GetDiff = CurrValue
Else
GetDiff = CurrValue - LastValue
LastValue = CurrValue
End If
End Function
結論:
関数は問題なく動作することがわかりましたが、結果をレポートに配置すると奇妙なことが起こり、クエリの最初の値が間違って表示され、クリックすると正しく表示されます。また、別の奇妙なことは、間違った値が表示されたフィールドの平均が必要な場合、正しい平均が表示され、間違った値をクリックしても平均が変わらないことです。質問には回答があり、残りの問題は別の質問です。ありがとう@トム・コリンズ。