为啥单击文本框垃圾结果的报告?
Posted
技术标签:
【中文标题】为啥单击文本框垃圾结果的报告?【英文标题】:Why clicking in a report on a textbox garbages results?为什么单击文本框垃圾结果的报告? 【发布时间】:2013-06-11 08:19:56 【问题描述】:谁能帮忙,我不知道发生了什么。
对于如下所示的表格:
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
除了值是有序的,没有任何关系。
使用了@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
结果显示该函数可以正常工作,但是当结果放入报表时发生了奇怪的事情,查询的第一个值出现错误,单击时又出现正确。另一个奇怪的事情是,如果我想要显示错误值的字段的平均值,它会显示正确的平均值,如果我点击错误的值,然后一切正常,平均值保持不变。
为什么会发生这种情况以及如何解决?
【问题讨论】:
你说它在报告中,然后你提到点击它。您实际上是在输出到报告还是到表单? @user 报告可在报告视图中单击。我的报告中也发生过类似的奇怪事情。有时我必须滚动才能显示结果,有时打印时没有显示(即使它们的可见性和仅打印属性没有搞砸)。 这一直是 Access 的缺点,而 Excel 更有用。必须使用自定义函数变通办法很尴尬,因为当您在报告中激活一行时,它将重新运行该函数,因此为什么结果会在加载和点击时发生变化。有机会编写一个排名查询,它应该提供更稳定的输出。 【参考方案1】:根据我的评论,并不是我所说的排名查询,但请尝试一下:
SELECT part, value, difference
FROM
(SELECT A.part, A.value, (SELECT Max(B.value) FROM TableName AS B WHERE B.part = A.part AND B.value < A.value) AS offset, IIf([offset] & ""="",[value],[value]-[offset]) AS difference
FROM TableName AS A
WHERE (((A.part)="BAC"))) AS B;
结果:
part value difference
BAC 102 102
BAC 519 417
BAC 1072 553
使用这样的查询而不是动态函数应该确保您的报告值不会改变。
【讨论】:
@CatalinFRANCU 我现在已经编辑了我的答案,以根据您的问题示例给出结果,希望对您有所帮助。以上是关于为啥单击文本框垃圾结果的报告?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我收到错误“Microsoft Visual Studio 2012 已停止工作”(当我单击文本框时)[关闭]