为啥单击文本框垃圾结果的报告?

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 已停止工作”(当我单击文本框时)[关闭]

为啥在 tabcontrol 内的 WPF 文本框中单击时,Windows 10 键盘会出现并立即消失?

计算报告中文本框中的结果数高于一定数量

如何通过单击列表框行项将搜索结果返回到文本框

如何清除此访问报告中文本框上的空白?