我有一个报告,其中包含一些代码,可以对计算列进行排序,因此当用户点击标签时,报表就会被排序,这是代码:
Private Sub Label44_Click()
If Me.OrderBy = "IIf([SumOfCurrentPriceVol]<>0,([SumOfOfferedPriceVolume]-[SumOfCurrentPriceVol])/[SumOfCurrentPriceVol],0) DESC" Then
Me.OrderBy = "IIf([SumOfCurrentPriceVol]<>0,([SumOfOfferedPriceVolume]-[SumOfCurrentPriceVol])/[SumOfCurrentPriceVol],0) ASC"
Else
Me.OrderBy = "IIf([SumOfCurrentPriceVol]<>0,([SumOfOfferedPriceVolume]-[SumOfCurrentPriceVol])/[SumOfCurrentPriceVol],0) DESC"
End If
Me.OrderByOn = True
End Sub
当我单独使用报告时,它工作正常。但是,如果我将报告放在表单中,我会收到以下错误消息:
"Run-Time Error '5': Invalid procedure call or argument"
在
Me.OrderByOn = True
我尝试将Me
更改为Report
,我得到的结果相同。什么可能失败的想法?
答案 0 :(得分:0)
我能够重新创建这个问题。这不是您可能想要添加到记录源的复杂计算。我用一个简单的单个字段重新创建它。这是我发现的:
(抱歉,我似乎无法在此处上传图片;这是不幸的)
检查报告属性的[数据]标签,然后查看Order By On Load
。它可能设置为是。这意味着你不需要打开它,因为它已经打开了。
但与此同时,OrderBy
的默认值为Null。报告会告诉您OrderByOn = False
如果OrderBy中存在空值,尽管Order By On Load
为真!
所以基本上,您需要在属性中设置默认OrderBy
,在OderBy
事件中设置默认Report_Activate()
,或者更新代码以查找/一次空值。
为什么你的代码在报告中工作,但子报告不是一个谜;也许是一个bug。我能够通过执行上述3个建议中的任何一个来解决问题。
哦,不要忘记删除Me.OrderByOn = True
,因为这是导致问题的原因......某种半烘焙的只读错误只在子报表中触发。