m遇到大麻烦请帮忙...我有Rdlc报告表达式使用自定义代码,其中包含连接字符串但是当我运行报告时它不起作用:( 连接无法打开。这是我到目前为止所做的:
我的自定义Rdlc代码在这里..
Function GradeCal(ByVal SubDivID As Integer, ByVal Perc As Decimal) As String
Dim oConn As New System.Data.SqlClient.SqlConnection
oConn.ConnectionString = "Data Source=*****;Initial Catalog=PSIDB; Persist Security Info=True; User ID=sa; Password=*******"
oConn.Open()
Dim oCmd As New System.Data.SqlClient.SqlCommand
oCmd.Connection = oConn
oCmd.CommandText = "SELECT * from dbo.[funcGradesCal](" + SubDivID + "," + Perc + ")"
Dim nRetVal As String = oCmd.ExecuteScalar()
oConn.Close()
If (nRetVal <> Nothing) Then
Return nRetVal
Else
Return "0-0"
End If
End Function
&#13;
这是我的表达......
=Code.GradeCal(1,42)
&#13;
但结果是#Error :(
我在自定义代码中添加了refernece .. System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089
请给我任何想法
答案 0 :(得分:0)
在自定义代码中嵌入连接字符串将导致部署噩梦。
更好的方法是创建一个默认值为"0-0"
的报表参数,在调用报表时获取数据Dim nRetVal As String = oCmd.ExecuteScalar()
,并为报表参数指定nRetVal
。< / p>
<强>更新强>
GradeCal()
从报告移至另一个类或模块定义报告参数
GradeCal
4。 将您的报告项目从=Code.GradeCal(1,42)
修改为=Parameters!GradeCal.Value
,或者只需将参数拖放到报告中。
dim nRetVal as integer = GradeCal(1,42)
以获取数据将值传递给参数报告
Dim param As New ReportParameter("GradeCal",nRetVal)
ReportViewer1.LocalReport.SetParameters(param)