在SSRS中添加参数值

时间:2010-12-23 19:12:53

标签: vb.net winforms reporting-services ssrs-2008 subscription

我已经在ReportServer上设置了报告。它的订阅也是如此。我要做的是添加ParameterValue“CC”和一些电子邮件地址,然后发送电子邮件。它似乎不起作用。

我的代码:

Dim emailReader As SqlDataReader = selCount.ExecuteReader
Dim emailsTest As List(Of String) = New List(Of String)
emailsTest.Add("test1@pen.com")
emailsTest.Add("test2@pen.com")
emailsTest.Add("test3@pen.com")
emailsTest.Add("test4@pen.com")
If emailReader.HasRows() Then 'checks to see if there any quotes in query

    For Each subscrp As rs.Subscription In subscr
        Dim allValues = subscrp.DeliverySettings.ParameterValues
        Dim allValuesList As List(Of ReportTriggerTemplate1.rs.ParameterValueOrFieldReference) = allValues.ToList()
        Dim CCParameter As ReportTriggerTemplate1.rs.ParameterValue = New ReportTriggerTemplate1.rs.ParameterValue()
        CCParameter.Name = "CC"
        CCParameter.Value = String.Empty
        allValuesList.Add(CCParameter)
        Dim toValue = CType(allValuesList.Item(7), ReportTriggerTemplate1.rs.ParameterValue)

        For Each testEmail As String In emailsTest
            Dim ownerEmail As String = testEmail
            If toValue.Value.Contains(ownerEmail) Then
                'skip
            ElseIf toValue.Value = String.Empty Then
                toValue.Value += ownerEmail
            Else
                toValue.Value += "; " & ownerEmail
            End If
        Next
        subscrp.DeliverySettings.ParameterValues = allValuesList.ToArray()
        Dim hello As String = "hi"
        tr.FireEvent(EventType, subscrp.SubscriptionID) 'forces subscription to be sent
    Next

我添加到toValue.Value的内容似乎根本没有添加到报告的CC订阅字段中。那我错过了什么?

1 个答案:

答案 0 :(得分:1)

http://msdn.microsoft.com/en-us/library/ms154020%28v=SQL.100%29.aspx

http://msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.getsubscriptionproperties.aspx

http://msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.setsubscriptionproperties%28v=SQL.105%29.aspx

 Try
        tr = New rs.ReportingService2005
        Dim extSettings As ExtensionSettings = Nothing
        Dim desc As String = Nothing
        Dim active As ActiveState = Nothing
        Dim status As String = Nothing
        Dim matchData As String = Nothing
        Dim values As ParameterValue() = Nothing
        Dim extensionParams As ParameterValueOrFieldReference() = Nothing

        Dim mainLogin As System.Net.NetworkCredential = New System.Net.NetworkCredential("ADUser", "Password", "NetworkName")
        If mainLogin Is Nothing Then
            tr.Credentials = System.Net.CredentialCache.DefaultCredentials
        Else
            tr.Credentials = mainLogin
        End If

'跳到相关代码

        For Each subscrp As rs.Subscription In subscr

                Dim allValues = subscrp.DeliverySettings.ParameterValues
                Dim allValuesList As List(Of ReportTriggerTemplate1.rs.ParameterValueOrFieldReference) = allValues.ToList()

                If CType(allValuesList.Item(0), ReportTriggerTemplate1.rs.ParameterValue).Value = "test@pen.com" Then
                    Dim subsID = subscrp.SubscriptionID
                    'important code just below
                    tr.GetSubscriptionProperties(subsID, extSettings, desc, active, status, EventType, matchData, extensionParams)

                    ''''add change to CC here
                    Dim extSettingsList As List(Of ReportTriggerTemplate1.rs.ParameterValueOrFieldReference) = extSettings.ParameterValues.ToList()
                    If CType(extSettingsList.Item(1), ReportTriggerTemplate1.rs.ParameterValue).Name = "CC" Then
                        If CType(extSettingsList.Item(1), ReportTriggerTemplate1.rs.ParameterValue).Value = String.Empty Then
                            CType(extSettingsList.Item(1), ReportTriggerTemplate1.rs.ParameterValue).Value = emailsTest.Item(0) & ";" & emailsTest.Item(1)
                        Else
                            CType(extSettingsList.Item(1), ReportTriggerTemplate1.rs.ParameterValue).Value += ";" & emailsTest.Item(0) & ";" & emailsTest.Item(1)
                        End If
                    Else
                        Dim CCParameter As ReportTriggerTemplate1.rs.ParameterValue = New ReportTriggerTemplate1.rs.ParameterValue()
                        CCParameter.Name = "CC"
                        CCParameter.Value = emailsTest.Item(0) & ";" & emailsTest.Item(1)
                        extSettingsList.Insert(1, CCParameter)
                        extSettings.ParameterValues = extSettingsList.ToArray
                    End If
                    'important code just below
                    tr.SetSubscriptionProperties(subsID, extSettings, desc, EventType, matchData, extensionParams)

                    tr.FireEvent(EventType, subscrp.SubscriptionID) 'forces subscription to be sent

                Else


                End If

         Next