RE:aplicacion en crystal con visual
La conexión desde visual a Crystal puede ser de varias formas y puede influir también el tipo de base de datos.
Te voy a dar un ejemplo con Base de datos Access:
En primer lugar agrega un control de Crystal en el formulario desde donde llamaras el reporte y le pones un nombre. Si no tienes ese control, entonces ve a al menú Proyecto/Componentes y lo activas (se llama Crystal Report Control). Para que te aparezca debes haber instalado previamente el Crystal Report en esa máquina.
Luego si prefieres manejar la base de datos fuente con una variable pon esta linea en un módulo:
Public RutaBD as string
RutaBD = App.Path & "\Reportes\Electro.mdb"
Luego pones alguno de estos códigos, en mi caso yo los tengo en un módulo con un SELECT según el formulario que se ocupe:
Case "COMPRAS1"
With frmPCompras.crReporte1
vFecha1 = Format(frmPCompras.dtpFecha1.Value, "yyyyMMdd")
vFecha2 = Format(frmPCompras.dtpFecha2.Value, "yyyyMMdd")
.DataFiles(0) = RutaBD
.ReportFileName = App.Path & "\Reportes\rptCompras.rpt"
.SelectionFormula = "{pCompras.Fecha} >= " & Chr(39) & vFecha1 & Chr(39) & _
" AND {pCompras.Fecha} <= " & Chr(39) & vFecha2 & Chr(39)
.WindowState = crptMaximized
.WindowTitle = "REPORTE DE COMPRAS POR RANGO DE FECHAS"
.Destination = crptToWindow
.Action = 1
End With
Case "COMPRAS2"
With frmPCompras.crReporte2
vCodigo = Trim(frmPCompras.txtCodigo)
.DataFiles(0) = RutaBD
.ReportFileName = App.Path & "\Reportes\rptCompras.rpt"
.SelectionFormula = "{pCompras.CodCompra} = " & Chr(39) & vCodigo & Chr(39)
.WindowState = crptMaximized
.WindowTitle = "REPORTE DE COMPRAS # " & vCodigo
.Destination = crptToWindow
.Action = 1
End With
Case "COMPRAS3"
With frmPCompras.crReporte3
A = Trim(frmPCompras.txtFactura)
B = Trim(frmPCompras.lblProveedor)
.DataFiles(0) = RutaBD
.ReportFileName = App.Path & "\Reportes\rptCompras.rpt"
.SelectionFormula = "{pCompras.Factura} = " & Chr(39) & A & Chr(39) & _
" AND {pCompras.CodProveedor} = " & Chr(39) & B & Chr(39)
.WindowState = crptMaximized
.WindowTitle = "REPORTE DE COMPRAS POR FACTURA Y PROVEEDOR"
.Destination = crptToWindow
.Action = 1
End With
Case "COMPRAS4"
With frmPCompras.crReporte4
A = Trim(frmPCompras.lblProveedor)
vFecha1 = Format(frmPCompras.dtpFecha1.Value, "yyyyMMdd")
vFecha2 = Format(frmPCompras.dtpFecha2.Value, "yyyyMMdd")
.DataFiles(0) = RutaBD
.ReportFileName = App.Path & "\Reportes\rptCompras.rpt"
.SelectionFormula = "{pCompras.CodProveedor} = " & Chr(39) & A & Chr(39) & _
" AND {pCompras.Fecha} >= " & Chr(39) & vFecha1 & Chr(39) & _
" AND {pCompras.Fecha} <= " & Chr(39) & vFecha2 & Chr(39)
.WindowState = crptMaximized
.WindowTitle = "REPORTE DE COMPRAS DEL PROVEEDOR # " & A
.Destination = crptToWindow
.Action = 1
End With
Case "CLIENTE"
With frmMClientes.crReporte1
.DataFiles(0) = RutaBD
.ReportFileName = App.Path & "\Reportes\rptClientes.rpt"
.WindowState = crptMaximized
.WindowTitle = "LISTADO DE CLIENTES"
.Destination = crptToWindow
.Action = 1
End With
Case "ENTSAL"
With frmPEntSal.crReporte1
vFecha1 = Format(frmPEntSal.dtpFecha1.Value, "yyyyMMdd")
vFecha2 = Format(frmPEntSal.dtpFecha2.Value, "yyyyMMdd")
.DataFiles(0) = RutaBD
.ReportFileName = App.Path & "\Reportes\rptEntSal.rpt"
.SelectionFormula = "{pEntSal0.Fecha} >= " & Chr(39) & vFecha1 & Chr(39) & _
" AND {pEntSal0.Fecha} <= " & Chr(39) & vFecha2 & Chr(39)
.WindowState = crptMaximized
.WindowTitle = "REPORTE DE ENTRADAS Y SALIDAS"
.Destination = crptToWindow
.Action = 1
End With
En los anteriores ejemplos, se especifican algunas variables y en otros no. El .selectionformula es algo parecido a un SELECT donde especificas uno o más campos de una tabla que cumplan cierta condición, según tu interés.
Hay gente que prepara todos los datos en visual basic, lo envia a una tabla y hacen el reporte en cristal trayendo todos los registros que estén en dicha tabla.
Hay muchas formas de usar el Crystal, espero te sirva esta ayuda. Si tu base de datos es en SQL Server cambia un poco el código.
Cualquier duda me avisas.