Ir al contenido principal

Clase generica para llamar un reporte de cristal report en Visual Basic 2008


Esta clase permite llamar un reporte de Crystal report de forma genérica y estandarizada, aquí
le comparto el método que llama de la clase, la cual puede tener el nombre que ustedes mejor les convenga, yo le llamo clsReporteGenerico


 Public Overloads Shared Sub printrpt(ByVal nombrereporte As String, ByVal REPORTEDOC As ReportDocument, ByVal ParamArray par() As String)
        Try

            Dim forma As New frmPrinter  ' forma que tiene un objeto de tipo crystalreportviewer
            forma.MdiParent = mainmenu1  ' El nombre de la mdi del sistema 
            Dim rpt As New ReportDocument
            rpt = REPORTEDOC

            With forma.crvVarios
                .ReportSource = rpt

                If par.Length > 0 Then
                    .ParameterFieldInfo = genpar(par)
                End If

                logonrpt(rpt)
                'Configurar aquí cualquier opción de exportación
                Dim opt As New ExportOptions
                opt = rpt.ExportOptions

                ' Ocultar la barra de exportaciones e impresion segun el usuario

                .ShowExportButton = gexportar_reportes
                .ShowPrintButton = gimprimir_reportes
               

                'Configurar aquí cualquier opción de impresión
                Dim prn As PrintOptions
                prn = rpt.PrintOptions
                .ReportSource = rpt
                'Visualizar el reporte en una ventana nueva
                forma.Text = custTitle
                forma.WindowState = FormWindowState.Maximized
                forma.Show()

             

            End With
        Catch exIOException As IO.IOException
            MsgBox("Ocurrio el error de I/O siguiente:" & exIOException.Message)
        Catch ex As Exception
            MsgBox("Ocurrio el error GENERICO :" & ex.Message)

        End Try
    End Sub

 Private Shared Function logonrpt(ByRef reporte As ReportDocument) As Boolean
        Dim crtableLogoninfos As New TableLogOnInfos
        Dim crtableLogoninfo As New TableLogOnInfo
        Dim crConnectionInfo As New ConnectionInfo
        Dim CrTables As Tables
        Dim CrTable As Table
        crConnectionInfo = loginfo
        CrTables = reporte.Database.Tables
        For Each CrTable In CrTables
            crtableLogoninfo = CrTable.LogOnInfo
            crtableLogoninfo.ConnectionInfo = crConnectionInfo
            CrTable.ApplyLogOnInfo(crtableLogoninfo)
        Next
        Return True
    End Function


' -----Metodo conectar

 Public Shared Sub conectar(ByVal servidor As String, ByVal basedatos As String, ByVal usuario As String, ByVal password As String)
        loginfo = New CrystalDecisions.Shared.ConnectionInfo
        loginfo.ServerName = servidor
        loginfo.DatabaseName = basedatos
        loginfo.UserID = usuario
        loginfo.Password = password
    End Sub

Para llamar la función desde una forma hace lo siguiente

      clsReporteGenerico.conectar(cn.servidor, "MYBASE", cn.usuario, cn.password)

' Luego llama al reporte con los parametros separados por comas y cada argumento con su valor unido por un anpersand &.

clsReporteGenerico.printrpt("RPT_ANUAL.rpt", New RPT_ANUAL, "@cod_empre;" & Mid(Cempre, 1, 2), "@anio;" & Me.Combo_anio.SelectedValue, "@cod_taller;" & Me.Combocod_taller.SelectedValue, "@tipo;1", "@tipo2;2")


     


Comentarios

Entradas populares de este blog

GUARDAR DOCUMENTOS PDF EN LA BASE DE DATOS SQLSERVER DESDE .NET

Personalmente quiero contarles que para mi este proceso ha sido muy escabroso,he dedicado muchas horas de investigacion para encontrar la forma de hacerlos lo más sencillo posible. Anteriormente había guardado imagenes en la base de datos utilizando compos de tipo imagen, pero luego revisando la documentacion de sqlserver 2005 encontre que en el futuro este tipo de campo podría ser descartado, esto me llevo a buscar otras alternativas especialmente con los campos binarios o (varbinary(max)) . PASOS: 1.- Primero declare las siguientes variables de clase en su formulario windows form Dim fdlg As New OpenFileDialog Dim fs As System.IO.FileStream Dim mcorr_documento As Int32 Dim bw As System.IO.BinaryWriter ----- fin de las variables de clase 2.- Seguidamente en su formulario pegue un objeto de tipo OpenFileDialog que le servira para buscar el archivo que desea almacenar en la base de datos 3.- Cree un objeto de tipo Combo y agregue una lista de los tipos de archivos q

Como guardar un PDF en un campo de una tabla en SQL SERVER utilizando PowerBuilder

1.- Crea un campo de tipo image en la tabla donde deseas guardar tu archivo. 2.- Luego lees el archivo pdf del path donde se encuentre 3.- Seguidamente actualizas el contenido leido en el campo de la tabla Supongamos que tenemos una tabla que se llama prueba y utiliza una llave unica sobre el campo tmp_llave. El campo campo image se llama tmp_archivo. // Declaramos nuetros campos de tipo blog blob lbl_data blob lbl_temp long ll_file, ll_long = 0, ll_tam integer li_pos = 1 // leemos el archivo ll_file = FileOpen("c:\temp\prueba.pdf",streammode!) // barremos sus registros Do While FileRead(ll_file,lbl_temp) > 0 lbl_data += lbl_temp Loop // cerramos el archivo FileClose(ll_file) // actualizamos nuestra base de datos UPDATEBLOB prueba SET prueba.tmp_archivo = :lbl_data WHERE prueba.tmp_llave = :li_llave; // Para recuperar y mostrar el archivo: SELECTBLOB tmp_archivo INTO :lbl_data FROM prueba WHERE prueba.tmp_llave = :li_llave; ll_file FileOpen("c:\temp\prueba2.pdf"

Como reparar una DB SQL

En muchas ocasiones nuestra base de datos en sqlserver 2000 se puede dañar por fallas debido a que nuestro servidor se reinicia de manera inesperada o la memoria RAM o el disco duro tienen algunos problemas. Esto origina que en la base de datos se corrompan algunos objetos como tablas o índices. Cuando tratamos de seleccionar registros en nuestra tabla nos da un error grave del ( DBPROCESS is dead, Error Severities) Aquí es donde inicia nuestro problema, no podemos acceder a los registros de la tabla; la razón puede ser según el nivel de severidad del error, estos niveles están categorizados así: EXINFO 1 Informational, nonerror. EXUSER 2 User error. EXNONFATAL 3 Nonfatal error. EXCONVERSION 4 Error in DB-Library data conversion. 5 The server has returned an error flag. EXTIME 6 Time-out period exceeded while waiting for a response from the server; the DBPROCESS is still alive. EXPROGRAM 7 Coding error in user program. EXRESOURCE 8 Running out of resources; the DBPROCESS ma