none
Login de base de datos al llamar a un reporte con vb.net y crystal report RRS feed

  • Pregunta

  • Hola a todos, necesito de su ayuda espero me puedas ayudar, el problema es el siguiente, tengo una aplicacion hecha en Visual Basic .Net, la aplicacion es de escritorio, trabajo con sql server, tengo una opcion donde tengo que llamar un reporte pero cada vez que lo hago me sale una formulario donde me pide usario y contraseña de la base de datos, porque será eso??, como lo soluciono??, aqui le adjunto mi codigo donde llamo asl reporte.

            Me.WindowState = FormWindowState.Maximized
            Me.crvReporte.RefreshReport()
           Dim dia As Integer = Date.Now.Day
            Dim mes As Integer = Date.Now.Month
            Dim anio As Integer = Date.Now.Year
            Dim fecha As String = anio.ToString() + "-" + mes.ToString() + "-" + dia.ToString()

            Dim B_ImprimirSinVer As Boolean = False
            Dim B_SeImprimioCorrectamente As Boolean = False
            Dim sReportName As String = "Z:\SISDIANA\ADMREPORTE\REPORTES1\rptprescripcionevodiaria.rpt"

            Dim intCounter As Integer
            Dim intCounter1 As Integer
            Dim S_Conexion As String = G_CONEXIODBSIFAENUSO

            Dim S_Server As String = "SERVIDOR\SQL2008"
            Dim S_Database As String = "BDDIANA"
            Dim S_User As String = "SA"
            Dim S_Password As String = ""
            Dim ObjReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument

            Dim ConInfo As New CrystalDecisions.Shared.TableLogOnInfo
            Dim paraValue As New CrystalDecisions.Shared.ParameterDiscreteValue
            Dim currValue As CrystalDecisions.Shared.ParameterValues

            Dim mySubReportObject As  _
                CrystalDecisions.CrystalReports.Engine.SubreportObject
            Dim mySubRepDoc As New  _
                CrystalDecisions.CrystalReports.Engine.ReportDocument
            Dim index As Integer
            Dim instance As New Printing.PrinterSettings
            Try
                B_SeImprimioCorrectamente = False
                ObjReport.Load(sReportName, CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)

                ObjReport.SetDatabaseLogon(S_User, S_Password, S_Server, S_Database)

                Dim Parametros As New ArrayList
                Parametros.Clear()

                Parametros.Add(Me.nombre_paciente.ToString())
                Parametros.Add(Me.codigo_paciente)
                Parametros.Add(fecha.ToString())
                Parametros.Add(EVOLUCIONDIARIA.operador.ToString())
                Parametros.Add(Me.codigo_prescripcion.ToString())

                intCounter = Parametros.Count

                For index = 0 To Parametros.Count - 1
                    currValue = ObjReport.DataDefinition.ParameterFields(index).CurrentValues
                    currValue.AddValue(Parametros(index))
                    ObjReport.DataDefinition.ParameterFields(index).ApplyCurrentValues(currValue)
                Next

                ConInfo.ConnectionInfo.UserID = S_User
                ConInfo.ConnectionInfo.Password = S_Password
                ConInfo.ConnectionInfo.ServerName = S_Server
                ConInfo.ConnectionInfo.DatabaseName = S_Database
                
                For intCounter = 0 To ObjReport.Database.Tables.Count - 1
                    ObjReport.Database.Tables(intCounter).ApplyLogOnInfo(ConInfo)
                Next

                For index = 0 To ObjReport.ReportDefinition.Sections.Count - 1
                    For intCounter = 0 To ObjReport.ReportDefinition.Sections(index).ReportObjects.Count - 1
                        With ObjReport.ReportDefinition.Sections(index)
                            If .ReportObjects(intCounter).Kind = CrystalDecisions.Shared.ReportObjectKind.SubreportObject Then
                                mySubReportObject = CType(.ReportObjects(intCounter), CrystalDecisions.CrystalReports.Engine.SubreportObject)
                                mySubRepDoc = mySubReportObject.OpenSubreport(mySubReportObject.SubreportName)
                                For intCounter1 = 0 To mySubRepDoc.Database.Tables.Count - 1
                                    mySubRepDoc.Database.Tables(intCounter1).ApplyLogOnInfo(ConInfo)
                                    mySubRepDoc.Database.Tables(intCounter1).ApplyLogOnInfo(ConInfo)
                                Next
                            End If
                        End With
                    Next
                Next


                With ObjReport
                    .PrintOptions.PrinterName = instance.PrinterName
                    .PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.DefaultPaperSize
                End With

                Me.crvReporte.ReportSource = ObjReport

                If B_ImprimirSinVer Then
                    Me.crvReporte.PrintReport()
                    B_SeImprimioCorrectamente = True
                    Exit Try
                Else
                    Me.crvReporte.Show()
                    Me.crvReporte.Zoom(FACTORZOOM)
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Formulario General de Reportes", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try


    José Luis Proaño Acosta

    • Cambiado Enrique M. Montejo viernes, 20 de febrero de 2015 7:16 Pregunta relacionada con Crystal Reports
    miércoles, 18 de febrero de 2015 18:00

Todas las respuestas