Hola xochitemol, aqui te explico el codigo, espero me puedas entender
a mi tambien me costo entender que es lo que exactamente hacia
Primero que todo, esta es una forma de enlazar un reporte que ya tienes hecho con el crystal report sin necesidad de incluirlo en tu proyecto visual basic
Funciona usando Crystal Report 9 y agregando un control CRViewer9
No se te olvide, debes agregar las referencias:
Crystal Reports 9 ActiveX Designer Design and Runtime Library (CRAXDDRT.DLL)
Crystal Report Viewer Control 9
y el Control: Crystal Report Viewer Control 9 (CRViewer9)
En un form Agregas el CRViewer9, que en este caso se llama CRViewer1
Código:
Option Explicit
Dim m_Application As New CRAXDDRT.Application 'Crea una nueva instancia de la aplicacion
Dim m_Report As CRAXDDRT.Report 'Declara una variable tipo Reporte
Dim FileReport As String 'Declara la variable que tendra el nombre del reporte
Dim CPProp As CRAXDRT.ConnectionProperty 'Declara una Variable para manipular las propiedadedes de conexion a la base de datos (User ID, Password,...)
Dim DBTabl As CRAXDRT.DatabaseTable 'Declara una variable
para manipular las tablas de la base de datos
Private Sub Form_Load()
FileReport = App.Path & "\Reporte.rpt" 'Asignas el reporte que quieres mostrar
Set m_Report = Nothing
Set m_Report = m_Application.OpenReport(FileReport, 1)
'Abre el reporte asignado en FileReport
'el valor 1 indica que abriras el reporte como una copia temporal
'en este caso podras abrir el reporte simultaneamente tantas veces quieras
'Si lo dejas en blanco o indica el valor 0 entonces el reporte se abrira en forma exclusiva
'es decir, mas nadie podra visualizarlo hasta que cierres el reporte
Set DBTabl = m_Report.Database.Tables(1) 'Obtiene la primera Tabla del reporte
DBTabl.Location = DirDataBase 'Establece la nueva ubicacion de la Base de Datos
CRViewer1.ReportSource = m_Report 'Le asignas a control CRViewer1 el reporte que personalizamos
CRViewer1.Zoom 1 'Poner el zoom del reporte a tamaño real
CRViewer1.ViewReport 'Mostrar el reporte
End Sub
No me habia dado cuenta pero la linea,
Dim CPProp As CRAXDRT.ConnectionProperty, no cumple niguna función pero se pudiera utilizar de esta forma:
Reemplaza estas lineas
Código:
Set DBTabl = m_Report.Database.Tables(1) 'Obtiene la primera Tabla del reporte
DBTabl.Location = DirDataBase 'Establece la nueva ubicacion de la Base de Datos
y coloca estas
Código:
Set CPProp = DBTabl.ConnectionProperties("Database Name") 'Obtenemos el nombre de la base de datos
CPProp.Value = FileReport 'Le asignas la nueva ubicacion de la base de datos
Espero que te ayude