// Declara los objetos de Crystal
Integer nReturn
OLEObject OLEAplicacion,OLEReporte,OLEInfoConexion,OLEExportacion,OLEDatabaseTable,OLEDatabase
// Crea el objecto y determina si se conecta o no
OLEAplicacion = create OLEObject
nReturn = OLEAplicacion.ConnectToNewObject('CrystalRuntime.Application.11')
if nReturn < 0 then
MessageBox("Error "+String(nReturn), "No se puede iniciar el Crystal Reports~n" + &
"Favor de comunicarse a Sistemas",Information!)
return
end if
OLEExportacion = create OLEObject
OLEDatabaseTable = create OLEObject
OLEDatabase = create OLEObject
// la variable sArchivoRPT contiene la ruta y nombre del archivo RPT
OLEAplicacion = OLEAplicacion.OpenReport(sArchivoRPT, 1)
OLEDatabase = OLEAplicacion.DataBase
OLEDatabaseTable = OLEDatabase.Tables
OLEInfoConexion = OLEAplicacion.database.tables[1].ConnectionProperties
OLEInfoConexion.deleteAll
OLEExportacion = OLEAplicacion.ExportOptions
OLEInfoConexion.add("DSN", 'NOMBRE DE TU DNS')
OLEInfoConexion.add("Database", 'NOMBRE DE BASE DE DATOS')
OLEInfoConexion.add("User ID", "USUARIO")
OLEInfoConexion.add("Password", "PASSWORD")
// Aquí envío los valores a los campos de crystal en unas variables
OLEAplicacion.ParameterFields.GetItemByName("@Cliente").AddCurrentValue(sCliente)
OLEAplicacion.ParameterFields.GetItemByName("@Factura").AddCurrentValue(isFactura)
OLEAplicacion.ParameterFields.GetItemByName("@Folio").AddCurrentValue(isFactura)
ole_factura.object.ReportSource(OLEAplicacion)
ole_factura.object.EnableExportButton = false
ole_factura.object.EnableRefreshButton = false
ole_factura.object.EnableZoomControl = false
ole_factura.object.EnableAnimationCtrl = False
ole_factura.object.EnablePopupMenu = false
ole_factura.object.EnableProgressControl = true
ole_factura.object.EnableDrillDown = True
ole_factura.object.EnableGroupTree = false
ole_factura.object.DisplayGroupTree = false
ole_factura.object.ViewReport()
ole_factura.object.Refresh()
// Otros atributos que debes tomar en cuenta de acuerdo a tus necesidades
// sPDF lleva la ruta y nombre del PDF a exportar
OLEExportacion.DiskFileName = sPDF // Indica la ruta y nombre del archivo PDF tal y como se guardara
OLEExportacion.DestinationType = 1 // Indica que es en la unidad C:
OLEExportacion.FormatType = 31 // Indica que el formato es PDF
OLEExportacion.PDFExportAllPages = True // Indica que imprima todas las hojas
OLEAplicacion.Export(false) // exporta, valor FALSE indica que no pida la ruta manualmente
Destroy OLEExportacion;
Destroy OLEDatabaseTable;
Destroy OLEDatabase;
Destroy OLEExportacion;