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
Publicar un comentario