我正在恢复某些报告。要做到这一点,我必须抓住并重新创建这里的RDL文件:Where does a published RDL file sit。SSRS 2016“函数不会在所有代码路径上返回值”
我正在从另一个线程中查询输出,保存结果(如一位评论者指出,否则您可能无法获得所有数据),然后在文本编辑器中打开它以去除一些垃圾字符首先用一个双引号替换两个双引号,然后将RDL文件上传到报表服务器。
这一直工作至今无任何自定义函数报告 - 但是,一旦我与SumLookup和AvgLookup职能的报告,我得到以下错误:
An error has occurred.
An unexpected error occurred while compiling expressions. Native compiler return value: '[BC42353] Function 'AvgLookup' doesn't return a value on all code paths. Are you missing a 'Return' statement?'.
原来AvgLookup功能,我用Google搜索前,现在已经工作正常,直到为:
Function AvgLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = 0
Dim avga As Decimal = 0
Dim counta As Integer = 0
For Each item As Object In items
If Not item Is Nothing Then
counta += 1
suma += Convert.ToDecimal(item)
End If
Next
If counta > 0 Then
avga = suma/counta
Else
avga = 0
End If
Return avga
End Function
我试图用一个简单的函数,只是返回1更换此:
Function AvgLookup(ByVal items As Object()) As Decimal
Return 1
End Function
但是这给了我同样的错误。
我到目前为止搜索的所有东西似乎都涉及到一个实际上并不总是有返回值的函数,所以我简单的“返回1”函数给出了相同的错误。
我所能做的就是删除RDL文件中的所有自定义代码以及对这些函数的任何引用,然后在上传后将其替换。有没有可能的解决方案?
这是行不通的吗? 函数AvgLookup()作为十进制 返回1 结束功能 –
我很欣赏响应 - 只是试过,得到了同样的错误。我最终做了什么:从.rdl中删除函数,搜索并用“AVg”代替“Code.AvgLookup”(注意大小写),上传此文件,在Report Builder中添加AvgLookup函数,下载.rdl,搜索并用“Code.AvgLookup”替换“AVg”(区分大小写),重新上传。我没有太多使用这个功能的报告,所以它没有太大的交易。但是我会很好奇知道_为什么会发生这种情况,这似乎很奇怪。 –
嗯,我会尝试的最后一件事。看看你的UI逻辑是否有一些奇怪的边缘情况转换。尝试使用As String作为结果并返回“1”。如果这不会产生更多实质性的话,那么我会删除ssrs中的现有.rdl并重新部署。 –