【发布时间】:2013-04-01 20:01:52
【问题描述】:
我正在编写一份 SSRS2005 报告,我需要使用一些 VB.NET 代码访问与报告中的数据库不同的数据库并返回整数列表(用户 ID)。我需要使用一些 VB.NET 代码来执行此操作。我有一些“有效”的代码,因为它不会引发任何错误并且我得到返回的值。但是,我只得到第一个值而不是整个列表。这是我目前所拥有的:
Public Function GetUsers(ByVal param As Integer) As String
Dim sqlCon As New System.Data.SqlClient.SqlConnection
Dim cmd As New System.Data.SqlClient.SqlCommand
Dim dRet As String
Dim sCmdText As String
sqlCon.ConnectionString = "data source=myServer;initial catalog=myDatabase;Integrated Security=true"
cmd = New System.Data.SqlClient.SqlCommand
sCmdText = "SELECT UsersRowID FROM dbo.tvf_Get_Users("
'cmd.CommandType = CommandType.Text
cmd.Connection = sqlCon
cmd.CommandTimeout = 0
sCmdText = sCmdText & param
sCmdText = sCmdText & ")"
cmd.CommandText = sCmdText
If sqlCon.State <> System.Data.ConnectionState.Open Then
sqlCon.Open()
End If
dRet = cmd.ExecuteScalar() & ""
sqlCon.Close()
Return dRet
End Function
我尝试过使用 DataSet 数据类型,但我收到了无法将 DataSet 转换为字符串的错误消息。
任何想法我需要做些什么才能让它工作?
【问题讨论】:
-
ExecuteScalar总是只返回一个值。这就是“标量”的意思。看看mindfiresolutions.com/… -
如果你使用 ExecuteScalar 它将只返回一个值,请尝试使用 DataSet 或 DataReader 的 SqlDataAdapter
-
谢谢罗伯特。就是这样。现在可以了。
标签: vb.net reporting-services reportingservices-2005