asp.net中程序水晶报告的正确形式是什么?和视觉基础

ang*_*gel 5 asp.net reportviewer report crystal-reports visual-studio

Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles GridView1.SelectedIndexChanged
    Dim rptv As New rptVenta()
    Session("vseleccionada") = GridView1.SelectedRow().Cells(1).Text.ToString()
    Dim daove As New DAOVenta()
    Dim tabla As New DataTable()
    tabla = daove.ImprimirFactura(Session("vseleccionada").ToString(), Session("nombreusuario").ToString())
    'Label2.Text = tabla.Rows(0)(3).ToString()
    '  rptv.SetDatabaseLogon("ventas.triton", "triton")
    '   rptv.SetDatabaseLogon("ventas.triton", "triton", "alumno-auc", "admodos")

    rptv.SetDataSource(tabla)
    rptv.SetDatabaseLogon("ventas.triton", "triton", ".", "admodos")

    CrystalReportViewer1.ReportSource = rptv
    rptv.Load("..\GUI\rptVenta.rpt")
    CrystalReportViewer1.LogOnInfo().Item(0).ConnectionInfo().DatabaseName = "admodos"
    CrystalReportViewer1.LogOnInfo().Item(0).ConnectionInfo().IntegratedSecurity = True
    CrystalReportViewer1.LogOnInfo().Item(0).ConnectionInfo().Password = "triton"
    CrystalReportViewer1.LogOnInfo().Item(0).ConnectionInfo().ServerName = "."
    CrystalReportViewer1.LogOnInfo().Item(0).ConnectionInfo().UserID = "ventas.triton"
    ' CrystalReportSource1.ReportDocument.SetDatabaseLogon("USER", "PASSWORD", "SERVIDOR", "Base de datos")
    CrystalReportViewer1.BackColor = Drawing.Color.White

    'CrystalReportViewer1.DataBind()

    Label2.Text = Session("vseleccionada").ToString() + Session("nombreusuario").ToString()

End Sub
Run Code Online (Sandbox Code Playgroud)

我有一个错误

The report requested additional information needed.
Run Code Online (Sandbox Code Playgroud)

那么,让它运作的正确步骤是什么?我正在使用visual basic,visual studio 2008,sql server 2008 r2编程.

小智 0

我之前收到过这个错误。我记不清我是如何修复它的(发生在 2-3 年前),但这是该项目的代码。我必须将其转换为 VB,但我编译并运行了它,它工作得很好。顺便说一下,这是在 ASP.Net Web 表单页面中,所以这是来自隐藏的代码。页面中的代码仅包含 CrystalReportViewer。

参考:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.Enterprise.Framework
  • CrystalDecisions.Enterprise.InfoStore
  • CrystalDecisions.ReportSource
  • CrystalDecisions.Shared
  • CrystalDecisions.Web

    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared

    Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

        ConfigureCrystalReports()

    End Sub

    Private Sub ConfigureCrystalReports()
        Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
        myConnectionInfo.DatabaseName = "ReportDatabase"
        myConnectionInfo.UserID = "ReportUser"
        myConnectionInfo.Password = "ReportPassword"
        myConnectionInfo.ServerName = "ReportServer"
        Dim ParamArrayList As ArrayList = New ArrayList()

        aReport = New ReportDocument()
        Dim reportPath As String = Server.MapPath("Report\ReportName.rpt")
        aReport.Load(reportPath)

        Dim Param as ArrayList 
        Param.Add("Value")

        SetCurrentValuesForParameterField(aReport, Param, "@Param1")
        myCrystalReportViewer.ReportSource = aReport 
        SetDBLogonForReport(myConnectionInfo, aReport)

    End Sub

    Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
        Dim myTables As Tables = myReportDocument.Database.Tables
        For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
           Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
           myTableLogonInfo.ConnectionInfo = myConnectionInfo
           myTable.ApplyLogOnInfo(myTableLogonInfo)
        Next
    End Sub

        Private Sub SetCurrentValuesForParameterField(ByVal myReportDocument As ReportDocument, ByVal myArrayList As ArrayList, ByVal ParameterFieldName As String)
            Dim currentParameterValues As ParameterValues = New ParameterValues()

            For Each submittedValue As Object In myArrayList
                Dim myParameterDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue()
                myParameterDiscreteValue.Value = submittedValue.ToString()
                currentParameterValues.Add(myParameterDiscreteValue)
            Next

            Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
            Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(ParameterFieldName)
            myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)
        End Sub

        Private Sub SetCurrentValuesForParameterField(ByVal myReportDocument As ReportDocument, ByVal myArrayList As ArrayList, ByVal ParameterFieldName As String, ByVal SubReportName As String)
            Dim currentParameterValues As ParameterValues = New ParameterValues()

            For Each submittedValue As Object In myArrayList
                Dim myParameterDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue()
                myParameterDiscreteValue.Value = submittedValue.ToString()
                currentParameterValues.Add(myParameterDiscreteValue)
            Next

            Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
            Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(ParameterFieldName, SubReportName)
            myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)
        End Sub
Run Code Online (Sandbox Code Playgroud)