Как передать параметры в отчет Crystal из кода vb.net

Я создал отчет Crystal (кросс-таблица). Я не использую какой-либо набор данных, вместо этого я использовал мастер в Crystal Report для вызова процедуры из моей схемы базы данных (указанный поставщик является поставщиком Microsoft OLEDB для oracle, после чего я дал свои учетные данные БД (т.е. схему, имя пользователя, пароль) и выбрал процедуру и выбрал столбцы, которые я хотел отобразить в отчете).

Есть 5 параметров, которые мне нужно передать из внешнего интерфейса для создания отчета. При просмотре предварительного просмотра отчета Crystal, предоставляя параметры, отчет работает нормально.

Теперь я хочу передать эти 5 параметров из внешнего интерфейса (vb.net), чтобы показать отчет в CrystalReportViewer. Пожалуйста, предложите код для записи в файле aspx.vb. (PS:- Я прошел через другие форумы и обнаружил некоторый код, но все они выдавали ту или иную ошибку, поэтому я публикую такую, чтобы я мог получить код, соответствующий моим требованиям).

Заранее спасибо..

2 ответа

Решение

Я получил отчет на работу... Я написал код ниже:

    Dim RptDocument As New ReportDocument

    RptDocument.Load(Server.MapPath("rpt\Report.rpt"))

    RptDocument.SetParameterValue("param1", Session("param1"))
    RptDocument.SetParameterValue("param2", ddlparam2.SelectedValue)
    RptDocument.SetParameterValue("param3", param3.text)
    RptDocument.SetParameterValue("param4", param4.text)
    RptDocument.SetParameterValue("param5", param5.text)

    'Set login info
    Dim myLogin As CrystalDecisions.Shared.TableLogOnInfo

    Dim myTable As Table
    For Each myTable In RptDocument.Database.Tables
        myLogin = myTable.LogOnInfo
        myLogin.ConnectionInfo.ServerName = "server name"
        myLogin.ConnectionInfo.DatabaseName = ""
        myLogin.ConnectionInfo.UserID = "userid"
        myLogin.ConnectionInfo.Password = "pwd"
        myTable.ApplyLogOnInfo(myLogin)
        myTable.Location = myTable.Location

    CrystalReportViewer1.ReportSource = RptDocument

Создал Системный DNS и должен был добавить Oracle.DataAccess.dll для ссылки и файла класса (с такими же функциями, как в файле класса connectooracle.vb, но с другим именем), также установите соединение в global.asax для ссылки на соединение этого класса и используя Imports Oracle.DataAccess.Client вместо Imports System.Data.OracleClient (чтобы избежать двусмысленности)...

Это как-то заставило его работать, и для этого может быть какое-то другое решение:)

(For ref:- Adding  myLogin.ConnectionInfo.IntegratedSecurity = True  gave me this error--
Logon failed. Error in File C:\DOCUME~1\Username\LOCALS~1\Temp\Report {1AG3DD86-141D-43YA-B6A2-AEDF3459AE49}.rpt: Unable to connect: incorrect log on parameters.)

Это работает для меня, и я использую Visual Studio 2008 для этого, так как VS2010 не имеет Crystal Engine для справки.

Сначала убедитесь, что вы импортировали эти два:

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Теперь, со своей стороны, я использовал odbc, потому что, как я заметил, Crystal Report прекрасно с этим работает, и так как мы работаем с odbc. Поэтому я не включил свойство входа в отчет в своем коде. В отчете просто выберите odbc connection.

Private Sub ReportViewer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim cryRpt As New ReportDocument

        Dim str1 As String


Try
            str1 = Title.str1
            str2  =Title.str2


            cryRpt.Load("c:\Program Files\Report\" & str2 & "")


            Dim crParameterFieldDefinitions As ParameterFieldDefinitions
            Dim crParameterFieldDefinition As ParameterFieldDefinition
            Dim crParameterValues As New ParameterValues
            Dim crParameterDiscreteValue As New ParameterDiscreteValue


                crParameterDiscreteValue.Value = strStore
                crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
                crParameterFieldDefinition = crParameterFieldDefinitions.Item("Store")
                crParameterValues = crParameterFieldDefinition.CurrentValues

                crParameterValues.Clear()
                crParameterValues.Add(crParameterDiscreteValue)
                crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)


            rptviewer.Cursor = Cursors.AppStarting
            rptviewer.ReportSource = cryRpt
            rptviewer.Refresh()
            rptviewer.Cursor = Cursors.Default
        Catch ex As Exception
            MsgBox(ex.Message)
            Me.Close()
            ReportInterface.Show()
        End Try
    End Sub

У меня есть класс, который будет получать данные, введенные пользователем. Но это не будет работать с использованием параметров хранимой процедуры.

пожалуйста, отметьте как принятый, если он работает для вас

Благодарю вас

Другие вопросы по тегам