Uso de crystal reports en VB.NET
Bueno... tomando en cuenta todos los problemas que puede llegar a dar el manejo de reportes, es viable apuntar que tanto CrystalRepots Como .Net hacen una gran pareja para el trabajo ordenado y confiable.
Iniciemos
1- Elaboro un reporte fuera de .NET [osea desde el mismo CR] , el cual lleva absolutamente todo lo que necesito osea que si lo ejecuto desde CR este dara los resultados deseados, el reporte puede haber sido creado partiendo de un procedimiento almacenado[SP] o directamente de un grupo de tablas o vistas.
Ahora lo que necesitamos es que .Net deploye el reporte previamente elaborado.
Para el ejemplo elabore un reporte el cual fue hecho a partir de un SP [procedimiento almacenado], el cual solicita tres parametros, por ende dichos parametros tengo que enviarlos desde .Net para que sean a su vez capturados por CR y los pueda procesar.
parametros solicitados por el reporte
OK. OK.
Ahora en VB.Net crearemos un nuevo proyecto y en el formulario de inicio [Form1] agregaremos un control CrystalReportViewer1, en la propiedad Dock le colocamos Fill
Espacios de nombre utilizados:
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
En el evento load del Fom1 colocaremos el siguiente codigo.
' ---------------------------By CesarL--------------
' SETEANDO CONEXION PARA CR
Dim oConexInfo As ConnectionInfo
Dim oListaTablas As Tables
Dim oTabla As Table
Dim oTablaConexInfo As TableLogOnInfo
' instanciar objeto para guardar datos de conexión
oConexInfo = New ConnectionInfo()
oConexInfo.ServerName = "NombreServidor"
oConexInfo.DatabaseName = "NombreBaseDatosODBC"
oConexInfo.UserID = "Usuario"
oConexInfo.Password = "Password"
Dim rpt_id As New ReportDocument
' Comprobamos la existencia del reporte, si el reporte no existe abortamos si no continuamos
Dim Reporte As String = Application.StartupPath & "Reporte.rpt"
If Not IO.File.Exists(Reporte) Then
MessageBox.Show("No se encontro reporte:" & vbCrLf & _
Reporte, "Report Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.Close()
Exit Sub
End If
'Una vez verificado el reporte procedemos a cargarlo
rpt_id.Load(Reporte)
oListaTablas = rpt_id.Database.Tables
For Each oTabla In oListaTablas
oTablaConexInfo = oTabla.LogOnInfo
oTablaConexInfo.ConnectionInfo = oConexInfo
oTabla.ApplyLogOnInfo(oTablaConexInfo)
'ENVIANDO VARIABLE A CR
rpt_id.SetParameterValue("@FechaInicio", "VariableFechaInicial")
rpt_id.SetParameterValue("@FechaFin", "VariableFechaFinal")
rpt_id.SetParameterValue("@Company", "VariableCompany")
Me.CrystalReportViewer1.ReportSource = rpt_id
Con esto el form1 cuando cargue hara lo siguiente
1- Seteara las variables de conexion
2- Comprobara la existencia del reporte
3- Si el reporte existe este creara una instancia de tipo CR y enviara los parametros de conexion y los parametros del reporte
4- Finalmente cargara el reporte.
Si quieres los fuentes, dudas o comentrios: cesarlopez1909@gmail.com
Buscar en Google
Busca en Todo Vb-Net
Búsqueda personalizada
miércoles, 21 de julio de 2010
lunes, 12 de julio de 2010
Convertir .doc a .pdf
Convertir .doc a .pdf
Muchas veces nos hemos visto en la necesidad de realizar una conversion de documentos entre estos dos tipos de formatos, existen muchas herramientas en la red que hacen dicho proceso, sin enbargo como programadores nos vemos en la necesidad muchas veces de manipular dicha conversion por tal motivo se inicia este pequeño tutorial.
Comenzemos...
Usaremos VB .Net 2008
Office 2010 [Version actualmente en mi PC]
Primero crearemos un nuevo proyecto.
En el formulario de inicio [Form1] agregaremos los siguientes controles
1- Caja de texto [TxtSource]
2- Boton Examinar [BtnExaminar]
3- Boton Convertir a PDF [BtnConvertir]
4- Un label [Label1]
El formulario se vera asi:
A nuestro proyecto debemos agregar la referencia correspondiente a Word
para mi caso es Microsoft Word 14.0 Object Library
Si tienes otra version de offices debes agregar la libreria correspondiente a tu version.
Vamos al codigo...
En el evento click del boton examinar haremos lo siguiente, esto lo que hace es habrir un dialogo el cual nos permitira seleccionar un documento de Word y almacenara la ruta en el TxtSource
'Seleccionar Tipo de Fichero
Dim TipoFichero As String
TipoFichero = ""
TipoFichero = "Fichero MSWord |*.doc;*.docx"
Try
Dim oFD As New OpenFileDialog
With oFD
.Filter = TipoFichero
.FileName = TxtSource.Text
If .ShowDialog = DialogResult.OK Then
TxtSource.Text = .FileName
End If
End With
Catch oexcep As Exception
MessageBox.Show("Error: //Abriendo Documento// " & vbCrLf & _
"Use una ubicación diferente" & vbCrLf & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
End Try
Luego en el evento click del boton ConvertirArchivo!!!
'----Pasando documento de Word a PDF ---------------------------------------
'----By CesarL
Dim wordApplication As ApplicationClass = New ApplicationClass()
Dim wordDocument As Document = Nothing
Dim paramSourceDocPath As String = TxtSource.Text
Dim paramExportFilePath As String = "C:\Test.pdf"
Dim paramExportFormat As WdExportFormat = _
WdExportFormat.wdExportFormatPDF
Dim paramOpenAfterExport As Boolean = False
Dim paramExportOptimizeFor As WdExportOptimizeFor = _
WdExportOptimizeFor.wdExportOptimizeForPrint
Dim paramExportRange As WdExportRange = _
WdExportRange.wdExportAllDocument
Dim paramStartPage As Int32 = 0
Dim paramEndPage As Int32 = 0
Dim paramExportItem As WdExportItem = _
WdExportItem.wdExportDocumentContent
Dim paramIncludeDocProps As Boolean = True
Dim paramKeepIRM As Boolean = True
Dim paramCreateBookmarks As WdExportCreateBookmarks = _
WdExportCreateBookmarks.wdExportCreateWordBookmarks
Dim paramDocStructureTags As Boolean = True
Dim paramBitmapMissingFonts As Boolean = True
Dim paramUseISO19005_1 As Boolean = False
Try
'Abrir documento basados en el que selecciono
wordDocument = wordApplication.Documents.Open(paramSourceDocPath)
' Exportar al formato deseado
If Not wordDocument Is Nothing Then
wordDocument.ExportAsFixedFormat(paramExportFilePath, _
paramExportFormat, paramOpenAfterExport, _
paramExportOptimizeFor, paramExportRange, paramStartPage, _
paramEndPage, paramExportItem, paramIncludeDocProps, _
paramKeepIRM, paramCreateBookmarks, _
paramDocStructureTags, paramBitmapMissingFonts, _
paramUseISO19005_1)
End If
Catch ex As Exception
'Aqui una exepcion no controlada
Finally
'cerrar documento
If Not wordDocument Is Nothing Then
wordDocument.Close(False)
wordDocument = Nothing
End If
'Quit a la aplicacion WinWord
If Not wordApplication Is Nothing Then
wordApplication.Quit()
wordApplication = Nothing
End If
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
' Fin de proceso -----------------------------------------------------------
Ahora solo ejecutamos nuestro proyecto, seleccionamos el archivo .doc ó .docx y presionamos el boton ConvertirArchivo!!! y se convertira el documento seleccionado y se almacenara en "C:\Test.pdf"
Muchas veces nos hemos visto en la necesidad de realizar una conversion de documentos entre estos dos tipos de formatos, existen muchas herramientas en la red que hacen dicho proceso, sin enbargo como programadores nos vemos en la necesidad muchas veces de manipular dicha conversion por tal motivo se inicia este pequeño tutorial.
Comenzemos...
Usaremos VB .Net 2008
Office 2010 [Version actualmente en mi PC]
Primero crearemos un nuevo proyecto.
En el formulario de inicio [Form1] agregaremos los siguientes controles
1- Caja de texto [TxtSource]
2- Boton Examinar [BtnExaminar]
3- Boton Convertir a PDF [BtnConvertir]
4- Un label [Label1]
El formulario se vera asi:
A nuestro proyecto debemos agregar la referencia correspondiente a Word
para mi caso es Microsoft Word 14.0 Object Library
Si tienes otra version de offices debes agregar la libreria correspondiente a tu version.
Vamos al codigo...
En el evento click del boton examinar haremos lo siguiente, esto lo que hace es habrir un dialogo el cual nos permitira seleccionar un documento de Word y almacenara la ruta en el TxtSource
'Seleccionar Tipo de Fichero
Dim TipoFichero As String
TipoFichero = ""
TipoFichero = "Fichero MSWord |*.doc;*.docx"
Try
Dim oFD As New OpenFileDialog
With oFD
.Filter = TipoFichero
.FileName = TxtSource.Text
If .ShowDialog = DialogResult.OK Then
TxtSource.Text = .FileName
End If
End With
Catch oexcep As Exception
MessageBox.Show("Error: //Abriendo Documento// " & vbCrLf & _
"Use una ubicación diferente" & vbCrLf & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
End Try
Luego en el evento click del boton ConvertirArchivo!!!
'----Pasando documento de Word a PDF ---------------------------------------
'----By CesarL
Dim wordApplication As ApplicationClass = New ApplicationClass()
Dim wordDocument As Document = Nothing
Dim paramSourceDocPath As String = TxtSource.Text
Dim paramExportFilePath As String = "C:\Test.pdf"
Dim paramExportFormat As WdExportFormat = _
WdExportFormat.wdExportFormatPDF
Dim paramOpenAfterExport As Boolean = False
Dim paramExportOptimizeFor As WdExportOptimizeFor = _
WdExportOptimizeFor.wdExportOptimizeForPrint
Dim paramExportRange As WdExportRange = _
WdExportRange.wdExportAllDocument
Dim paramStartPage As Int32 = 0
Dim paramEndPage As Int32 = 0
Dim paramExportItem As WdExportItem = _
WdExportItem.wdExportDocumentContent
Dim paramIncludeDocProps As Boolean = True
Dim paramKeepIRM As Boolean = True
Dim paramCreateBookmarks As WdExportCreateBookmarks = _
WdExportCreateBookmarks.wdExportCreateWordBookmarks
Dim paramDocStructureTags As Boolean = True
Dim paramBitmapMissingFonts As Boolean = True
Dim paramUseISO19005_1 As Boolean = False
Try
'Abrir documento basados en el que selecciono
wordDocument = wordApplication.Documents.Open(paramSourceDocPath)
' Exportar al formato deseado
If Not wordDocument Is Nothing Then
wordDocument.ExportAsFixedFormat(paramExportFilePath, _
paramExportFormat, paramOpenAfterExport, _
paramExportOptimizeFor, paramExportRange, paramStartPage, _
paramEndPage, paramExportItem, paramIncludeDocProps, _
paramKeepIRM, paramCreateBookmarks, _
paramDocStructureTags, paramBitmapMissingFonts, _
paramUseISO19005_1)
End If
Catch ex As Exception
'Aqui una exepcion no controlada
Finally
'cerrar documento
If Not wordDocument Is Nothing Then
wordDocument.Close(False)
wordDocument = Nothing
End If
'Quit a la aplicacion WinWord
If Not wordApplication Is Nothing Then
wordApplication.Quit()
wordApplication = Nothing
End If
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
' Fin de proceso -----------------------------------------------------------
Ahora solo ejecutamos nuestro proyecto, seleccionamos el archivo .doc ó .docx y presionamos el boton ConvertirArchivo!!! y se convertira el documento seleccionado y se almacenara en "C:\Test.pdf"
Suscribirse a:
Entradas (Atom)