InicioCiencia EducacionComo imprimir atraves de cristal report y visual vasic.net

Como imprimir atraves de cristal report y visual vasic.net

Ciencia Educacion7/19/2011


________________________________________
En esta ocasión veremos la manera de mostrar un reporte sencillo. La apariencia final de nuestra aplicación será la siguiente:

Al presionar el botón Imprimir, se abrirá la siguiente pantalla:

Nuestro proyecto de llama proReportes, y deberá quedar organizado de la siguiente manera:

Utilizamos una base de datos llamada dbPrac.mdb, la cual contiene una tabla llamada CAT_CLIENTES. En el archivo adjunto viene tal base de datos. Por adelantado te digo que esta conformada (la tabla) de la siguiente manera:

Campo Tipo Descripción
ID_CLIENTE TEXTO Campo llave
PATERNO Texto Apellido paterno
MATERNO Texto Apellido materno
NOMBRE Texto Nombre
RFC Texto RFC
DIRECCION Texto Dirección
TELEFONO Texto Telefono
LIM_CRED Doble Límite de crédito
Al formulario frmCatClientes, le agregamos 8 TextBox y 8 Label, con las siguientes características:
Objeto(nombre) Tipo Propiedad Valor
txtID_CLIENTE TextBox Text (vacío)
txtPATERNO TextBox Text (vacío)
txtMATERNO TextBox Text (vacío)
txtNOMBRE TextBox Text (vacío)
txtRFC TextBox Text (vacío)
txtDIRECCION TextBox Text (vacío)
txtTELEFONO TextBox Text (vacío)
txtLIM_CRED TextBox Text (vacío)
lblID_CLIENTE Label Text Clave
lblPATERNO Label Text Paterno:
lblMATERNO Label Text Materno:
lblNOMBRE Label Text Nombre:
lblRFC Label Text RFC
lblDIRECCION Label Text Dirección:
lblTELEFONO Label Text Teléfono:
lblLIM_CRED Label TExt Límite de crédito
Images ImageList
barBotones ToolBar
Agrega imágenes al ImageList y botones al ToolBar (que se parezcan a las arriba mostradas). En el archivo adjunto incluiré las imágenes (en realidad son iconos) que utilice para este ejemplo.
Agrega también un MainMenu como se muestra:

Al formulario frmReportes, agrega un CrystalReportViewer y ponle como nombre crvReportes, y el la propiedad Dock del Viewer selecciona Fill. El formulario debe quedar como se muestra:

Ahora agregaremos un DataSet, este nos servirá para enlazar nuestro reporte con los datos. Pon mucha atención a lo que a continuación se muestra:
1. Agrega un nuevo elemento(DataSet ):

Aparece algo como lo siguiente:

2. Selecciona Explorador de Servidores.

3. Con el botón derecho del mouse, sobre Conexiones de datos, selecciona Agregar conexión...

4. Conéctate a la base de datos de Access:

5. Después de lo anterior, aparece (más o menos) así el Explorador de servidores:

6. Expande la conexión (tal como se muestra en la figura) y arrastra la tabla CAT_CLIENTES como se muestra:

7. Cierra el Explorador de servidores, graba los cambios y ¡listo!, terminamos el DataSet.
Ahora crearemos nuestro reporte:
1. Agrega un nuevo elemento al proyecto (CrystalReports ). Pon el nombre rptCatClientes y presiona Abrir:

2. Selecciona Mediante el asistente de informes y presiona Aceptar:

3. Expande como se muestra a continuación:

4. Selecciona la tabla CAT_CLIENTES y presiona el botón Insertar tabla. Presiona Siguiente.

5. Agrega todos los campos (con el botón Agregar). Ve a la casilla Estilo, escribe el título del reporte (Catalogo de Clientes) y presiona Finalizar.
Ahora vamos a programar ...
Código:
Primero el código de clsMain:

Public Class clsMain
''Esta es la cadena de conexión
''Es necesaria para obtener conectividad con la base de datos
Public CnnStr As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=..DatadbPrac.mdb;" & _
"Persist Security Info=False "
End Class

Después del código del formulario (frmCatClientes):

''Programador: JUAN GABRIEL CASTILLO TURRUBIATES(poner tu nombre)
'' las instrucciones Imports, van antes de cualquier otra instrucción
Imports System.Data.OleDb
Imports CrystalDecisions.CrystalReports.Engine
Public Class frmCatClientes
Inherits System.Windows.Forms.Form
''una instancia a la clase clsMain
Dim miClsMain As New clsMain()
''Declaramos una conexión
Dim cnnCatClientes As New OleDbConnection(miClsMain.CnnStr)
''Declaramos un Comando
Dim cmdCatClientes As New OleDbCommand("SELECT * " & _
"FROM CAT_CLIENTES", cnnCatClientes)
''Declaramos un Data Adapter
Dim daCatClientes As New OleDbDataAdapter(cmdCatClientes)
''Un DataSet
Dim dsCatClientes As New DataSet()
''''y por último, el importantísimo Command Builder
Dim cbCatClientes As New OleDbCommandBuilder(daCatClientes)
Private Sub frmCatClientes_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Inicializar()
HabilitaBotones(True)
HabilitaCaptura(False)
End Sub
Private Sub Imprimir()
Try
'Código para mostrar el reporte
'Lo primero que hacemos es declarar una instancia
'del data set dsRepCatClientes
Dim mi_dsRepCatclientes As New dsRepCatClientes()
'Lo llenamos con el contenido de la tabla CAT_CLIENTES
daCatClientes.Fill(mi_dsRepCatclientes, "CAT_CLIENTES"
'Declaramos una instancia del Reporte
Dim mi_rptCatClientes As New rptCatClientes()
'Le indicamos al reporte que tome los datos
'del DataSet
mi_rptCatClientes.SetDataSource(mi_dsRepCatclientes)
'Delcaramos una instancia del formulario frmReprotes
Dim miForma As New frmReportes()
'Le indicamos que debe mostrar mi_rptCatClientes
miForma.crvReportes.ReportSource = mi_rptCatClientes
'que muestre el titulo "Reporte de Clientes"
miForma.Text = "Reporte de Clientes"
'Mostramos el formulario (el cual contiene el reporte)
miForma.Show()
Catch ex As Exception
MessageBox.Show(ex.Message, "Imprimir", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Function BuscarRegistro(ByVal prmPos As Integer) As Integer
'Código para buscar un registro
'Recibe como parámetro la posición actual en el DataSet
'para, en el caso de no encontrar el registro solicitado,
'regresar la posición del registro antes de iniciar.
'Lo que hace este procedimiento es
'regresar la posición en la que se encuentra el registro
'solicitado, en caso de no encontrarlo, regresa la posición
'antes de iniciar la búsqueda
Try
Dim dvCatClientes As DataView = _
New DataView(dsCatClientes.Tables(0), "", _
"ID_CLIENTE", DataViewRowState.CurrentRows)
'Declaramos varID_CLIENTE
Dim varID_CLIENTE As String = ""
'Preguntamos la clave del cliente que se desea buscar
varID_CLIENTE = InputBox("Introduce la clave a buscar", "Buscar"
If Not varID_CLIENTE = "" Then
'Regresamos el index del cliente encontrado
Return dvCatClientes.Find(varID_CLIENTE)
Exit Function
Else
'Si no se especificó el cliente, regresamos la
'posición (index) del cliente original(prmPos)
MessageBox.Show("La búsqueda no se puede realizar", _
"Información del sistema", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
Return prmPos
Exit Function
End If
Catch ex As Exception
'En caso de error, suponiendo que no se encontró el cliente,
'regresamos la posición original del cliente(prmPos)
MessageBox.Show(ex.Message, "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Return prmPos
Exit Function
End Try
End Function
Private Sub Actualizar()
Try
dsCatClientes.Clear() 'Limpiar el DataSet
daCatClientes.Fill(dsCatClientes, "CAT_CLIENTES"
Catch ex As Exception
MessageBox.Show(ex.Message, "Información del sistema", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub Inicializar()
Try
With cnnCatClientes
''Verificamos el estado de la conexión
If .State = 1 Then 'si esta abierta
.Close() 'cerramos
End If
.Open() '' abrimos la conexión
End With
''Cargamos el DataSet Con los datos de La tabla
daCatClientes.Fill(dsCatClientes, "CAT_CLIENTES"
''Enlazamos los Objetos
txtID_CLIENTE.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.ID_CLIENTE"
txtPATERNO.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.PATERNO"
txtMATERNO.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.MATERNO"
txtNOMBRE.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.NOMBRE"
txtRFC.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.RFC"
txtDIRECCION.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.DIRECCION"
txtTELEFONO.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.TELEFONO"
txtLIM_CRED.DataBindings.Add("Text", dsCatClientes, _
"CAT_CLIENTES.LIM_CRED"
Catch ex As Exception
''Esto ocurriría solo en el caso de que ocurra un error
MessageBox.Show(ex.Message, "Info del Sistema", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub Grabar()
Try
'Indicamos que termine la edición actual
Me.BindingContext(dsCatClientes, _
"CAT_CLIENTES".EndCurrentEdit()
'Actializamos la Base de datos
daCatClientes.Update(dsCatClientes, "CAT_CLIENTES"
HabilitaBotones(True)
HabilitaCaptura(False)
Catch ex As Exception
MsgBox(ex.Source & "; " & ex.Message, _
MsgBoxStyle.OKOnly, "Ocurrió un error"
End Try
End Sub
Private Sub Nuevo()
Try
'Indicamos que termine la edición actual
Me.BindingContext(dsCatClientes, _
"CAT_CLIENTES".EndCurrentEdit()
'Preparamos al DataSet para aceptar un Registro nuevo
Me.BindingContext(dsCatClientes, "CAT_CLIENTES".AddNew()
HabilitaBotones(False)
HabilitaCaptura(True)
Catch ex As Exception
MsgBox(ex.Source & "; " & ex.Message)
End Try
End Sub
Private Sub Eliminar()
''Este procedimiento es el encargado de eliminar un registro.
''Lo que hacemos es obtener la posición en la que nos encontramos
''Y después eliminamos el registro que se encuentra en esa posición
''Otra manera de eliminar seria ejecutar una instrucción SQL que
''elimine el registro (de acuerdo con la ID_CLIENTE)
''y después ejecutar el procedimiento Inicializar.
Dim Resp As String
Try
Resp = MsgBox("¿Esta seguro de eliminar el registro? " & _
vbCrLf & "Nota: Eliminar registros puede perjudicar " & _
"la ejecución.", MsgBoxStyle.OKCancel, "Eliminar Registro"
If Resp = vbOK Then
Dim Registro As Integer
Registro = Me.BindingContext(dsCatClientes, _
"CAT_CLIENTES".Position
Me.BindingContext(dsCatClientes, _
"CAT_CLIENTES".EndCurrentEdit()
Me.BindingContext(dsCatClientes, _
"CAT_CLIENTES".RemoveAt(Registro)
daCatClientes.Update(dsCatClientes, "CAT_CLIENTES"
Me.BindingContext(dsCatClientes, _
"CAT_CLIENTES".Position = 0
End If
Catch ex As Exception
MsgBox(ex.Source & "; " & ex.Message, _
MsgBoxStyle.OKOnly, "Ocurrió un error"
End Try
End Sub
Private Sub Cancelar()
Try
'Cancelamos
Me.BindingContext(dsCatClientes, _
"CAT_CLIENTES".CancelCurrentEdit()
HabilitaBotones(True)
HabilitaCaptura(False)
Catch ex As Exception
MsgBox(ex.Source & "; " & ex.Message, _
MsgBoxStyle.OKOnly, "Ocurrió un error"
End Try
End Sub
Private Sub HabilitaBotones(ByVal Habilitar As Boolean)
btnInicio.Enabled = Habilitar
btnAnterior.Enabled = Habilitar
btnSiguiente.Enabled = Habilitar
btnFinal.Enabled = Habilitar
btnNuevo.Enabled = Habilitar
mnuNuevo.Enabled = Habilitar
btnModificar.Enabled = Habilitar
mnuModificar.Enabled = Habilitar
btnEliminar.Enabled = Habilitar
mnuEliminar.Enabled = Habilitar
btnBuscar.Enabled = Habilitar
mnuBuscar.Enabled = Habilitar
btnActualizar.Enabled = Habilitar
btnImprimir.Enabled = Habilitar
btnGrabar.Enabled = Not Habilitar
mnuGrabar.Enabled = Not Habilitar
btnCancelar.Enabled = Not Habilitar
mnuCancelar.Enabled = Not Habilitar
btnSalir.Enabled = Habilitar
mnuSalir.Enabled = Habilitar
End Sub
Private Sub HabilitaCaptura(ByVal Habilitar As Boolean)
txtID_CLIENTE.Enabled = Habilitar
txtPATERNO.Enabled = Habilitar
txtMATERNO.Enabled = Habilitar
txtNOMBRE.Enabled = Habilitar
txtRFC.Enabled = Habilitar
txtDIRECCION.Enabled = Habilitar
txtTELEFONO.Enabled = Habilitar
txtLIM_CRED.Enabled = Habilitar
End Sub
Private Sub barBotones_ButtonClick(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) _
Handles barBotones.ButtonClick
Select Case barBotones.Buttons.IndexOf(e.Button)
Case Is = 0
Try
Me.BindingContext(dsCatClientes, "CAT_CLIENTES".Position = 0
Catch ex As Exception
MsgBox(ex.Source & "; " & ex.Message)
End Try
Case Is = 1
Try
Me.BindingContext(dsCatClientes, "CAT_CLIENTES".Position -= 1
Catch ex As Exception
MsgBox(EX.Source & "; " & EX.Message)
End Try
Case Is = 2
Try
Me.BindingContext(dsCatClientes, "CAT_CLIENTES".Position += 1
Catch ex As Exception
MsgBox(EX.Source & "; " & EX.Message)
End Try
Case Is = 3
Try
Me.BindingContext(dsCatClientes, "CAT_CLIENTES".Position = _
Me.BindingContext(dsCatClientes, "CAT_CLIENTES".Count - 1
Catch ex As Exception
MsgBox(EX.Source & "; " & EX.Message)
End Try
Case Is = 6
Nuevo()
Case Is = 7
'Modificar
HabilitaBotones(False)
HabilitaCaptura(True)
Case Is = 8
Eliminar()
Case Is = 9
'Buscar registro
Me.BindingContext(dsCatClientes, "CAT_CLIENTES".Position = _
BuscarRegistro(Me.BindingContext(dsCatClientes, "CAT_CLIENTES".Position)
Case Is = 10
Actualizar()
Case Is = 11
Imprimir()
Case Is = 12
Grabar()
Case Is = 13
Cancelar()
Case Is = 14
'Salir(cerrar el formulario)
Me.Close()
End Select
End Sub
End Class

Cualquier duda o comentario, mandame un mail a [email protected]

________________________________________
Espacios de nombres usados en el código de este artículo:
System.Data.OleDb
CrystalDesisions.CrystalReports.Engine

________________________________________

Fichero con el código de ejemplo: TheKin_proReportes.zip - 44 KB



Datos archivados del Taringa! original
1puntos
1,384visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
5visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

e
elmaf08🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.