Академический Документы
Профессиональный Документы
Культура Документы
La Güeb de Joaquín
Programación Visual Basic .NET
Crystal Reports
Índice de contenidos
Como se utiliza Crystal Reports en VB .NET......................................................................... 1
En documentos Windows................................................................................................... 1
A) Utilizar un control CristalReportViewer .................................................................... 2
b) Impresión directa en la impresora............................................................................... 3
c) Generando un fichero con formato PDF ..................................................................... 3
En documentos ASP NET.................................................................................................. 5
A) Utilizar un control CristalReportViewer .................................................................... 5
b) Impresión directa en la impresora............................................................................... 6
c) Generando un fichero con formato PDF ..................................................................... 6
En documentos Windows
En principio para utilizar Crystal Reports hay que importar los espacios de nombres
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
A continuación hay que generar el informe, cosa que no voy a explicar aquí como se hace,
porque si no sabes como se hace no debes leer este documento porque que no entenderás ni
nada de nada
Una vez generado el informe, para utilizarlo hay varias maneras, o bien se utiliza un control
CristalReportViewer, y se realiza una vista previa del informe, o bien se imprime
directamente el informe en la impresora.
1
Crystal Reports – NET (win y web)
La función siguiente es un poco especial, en el sentido de que los datos que se cargan en el
control no son los que selecciona el informe, sino que los pasamos en un DataSet y ese
conjunto de datos son los que se representan en el informe. Por ejemplo, supongamos que el
informe imprime todos los autores de libros de España, con esta función podemos utilizar el
mismo informe para imprimir únicamente los autores de Zaragoza, o los de Valencia, según
los datos que se pasen en el DataSet del parámetro.
CrystalReportViewer1.Visible = True
Dim miInforme As New CrystalReportAutores
miInforme.SetDataSource(ConjuntoDeDatos)
CrystalReportViewer1.ReportSource = miInforme
End Sub
El código siguiente es el que presenta la ayuda MSDN, realiza el mismo trabajo pero tiene el
inconveniente de que estamos accediendo a un recurso que esta en una dirección física del
disco, con lo que la portabilidad del código es menor
CrystalReportViewer1.Visible = True
oRpt = New ReportDocument
oRpt.Load("../informes/CrystalReportAutores.rpt")
2
Crystal Reports – NET (win y web)
Por ultimo tenemos otra opción que consiste en imprimir el informe en un documento PDF o
RTF, y guardarlo en disco. La forma de hacerlo se muestra en la siguiente función, como en
los ejemplos anteriores se pasa el conjunto de datos que se quieren imprimir
Try
' informacion para el control "SaveFileDialog"
3
Crystal Reports – NET (win y web)
' en disco
.ExportDestinationType = CrystalDecisions.Shared. _
ExportDestinationType.DiskFile
End With
'-----------------------------------------------------------
' ayuda MSDN
' Entrada [ExportToDisk]
'El siguiente ejemplo exporta el informe a disco
'como documento RTF.
'[Visual Basic]
' Report.ExportToDisk(ExportFormatType.RichText, "report.rtf")
'-----------------------------------------------------------
Catch ex As Exception
' informar de la excepcion antes de enviarla hacia arriba
MessageBox.Show( _
"ERROR" & ControlChars.CrLf & _
"Durante el proceso de generación del documento PDF" & _
" ha aparecido el siguiente error:" & _
ControlChars.CrLf & ex.Message, _
"Proceso de Grabacion", _
MessageBoxButtons.OK, _
MessageBoxIcon.Error, _
MessageBoxDefaultButton.Button1, _
MessageBoxOptions.DefaultDesktopOnly)
4
Crystal Reports – NET (win y web)
Finally
' cargarme las variables empleadas
' cerrar el informe
If Not pInformeCrystal Is Nothing Then
pInformeCrystal.Close()
pInformeCrystal = Nothing
End If
End Sub
También se pueden emplear el control CrystalReport en documentos ASP Net pero el código
tiene algunas diferencias sutiles.
CrystalReportViewer1.Visible = True
Dim miInforme As New CrystalReportAutoresWeb
miInforme.SetDataSource(ConjuntoDeDatos)
CrystalReportViewer1.ReportSource = miInforme
End Sub
5
Crystal Reports – NET (win y web)
'--------------------------
' no consigo hacerla funionar
' me da el problema de que no reconoce la impresora por defecto
Exit Sub
'--------------------------
End Sub
Funcion preparatoria
Public Sub Accion_imprimirDatos_FormatoPDF()
' instancia de un nuevo informe
Dim MiInforme As New CrystalReportAutoresWeb
' enganchar los datos a imprimir
MiInforme.SetDataSource(oDataSet)
' llamar a la funcion que hace el trabajo
ExportToPDF(MiInforme)
End Sub
6
Crystal Reports – NET (win y web)
crExportOptions = oRpt.ExportOptions
With crExportOptions
.FormatOptions = New PdfRtfWordFormatOptions
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
Dim st As System.IO.Stream
st = oRpt.FormatEngine.ExportToStream(req)
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Dim ln As Integer = 0
ln = CInt(st.Length)
Response.End()
End Sub
Referencias Bibliográficas
• Liberia MSDN de Microsoft
• http://www.devx.com/tips/Tip/18010, documento.: Export Crystal Reports to PDF