Hola. Alex,Todo el codigo para dar una vista previa a tu repote dentro
de un formulario, te lo adjunte en el primer mensaje que te envie,
claro debes previamente registrar el control activeX
CrystalReports115.ActivexReportViewer.1, en el menu Herramientas/
opciones de visual foxpro.
Coloca esta rutina en tu archivo de procedimiento general,solo tiene
que pasar el objeto Repore a la rutina, Te lo copio otra vez:
Public loCR,loRpt As Object
loCR= Createobject("CrystalRuntime.Application.11")
** Abre el reporte y guarda una referencia en ‘loRpt’.
If File("Crystal_Facturas.RPT")
loRpt= loCR.OpenReport(Fullpath("Crystal_Facturas.RPT"))
Else
Wait Window "No Existe!!, Cancelando la ejecucion..."
Return
Endif
Select
mfactura.no_factura,mfactura.fecha,mfactura.expediente,mfactura.valor,mfact
ura.valor_ppag,;
Count(mfactura.no_factura) As facturas,
mpacientes.nombres,mpacientes.apellidos;
From mpacientes INNER Join mfactura ;
On mpacientes.expediente = mfactura.expediente;
Group By mpacientes.expediente;
Order By mpacientes.expediente,mfactura.no_factura ;
Into Cursor tmpFacturas
Select tmpFacturas
** Crea nombre para tabla temporal que va a estar
** ubicada en la carpeta TEMP de Windows.
lcTabla= Addbs(Getenv("TEMP"))+ Sys(3)+ ".DBF"
*lcTabla= Addbs(Getenv("TEMP"))+ "tmpTurbi"+ ".DBF"
Copy To (lcTabla) Type Fox2x As 850
** Cambia la ubicación de la tabla en el reporte.
loRpt.Database.Tables(1).Location= lcTabla
** Descarta los datos que se hayan grabado con el reporte.
If loRpt.HasSavedData
loRpt.DiscardSavedData()
Wait Window "Tiene Datos Guardados"
Endif
** Imprime el reporte con los datos de la nueva ubicación.
loRpt.PrintOut(.T.)
do CR_preview with loRpt && Paso el objeto Reporte como
paramero al procdedimiento
********************
Procedure CR_preview
********************
Lparameter oReporte
If Pcount()>0
* Vista Previa
oForm = Createobject("vista_previa",oReporte) && FULLPATH
("Crystal_Facturas.RPT")
oForm.Show
Else
Messagebox("No se recibio parametros del Reporte",48)
Return
Endif
Procedure Init
Lparameter toRpt
Thisform.WindowState = 2
Thisform.WindowType = 1
Thisform.BorderStyle = 3
Thisform.Refresh
** Se pasa el objeto Report a la propiedad ReportSource
** del CR Viewer.
This.oleCRViewer.ReportSource= toRpt
** Se muestra el reporte.
This.oleCRViewer.ViewReport()
Endproc
PROCEDURE activate
This.oleCRViewer115.Top = 0
This.oleCRViewer115.Left=0
This.oleCRViewer115.Height = Thisform.Height
This.oleCRViewer115.Width = Thisform.Height
endpro
Procedure oleCRViewer.Init
** Muestra el botón de exportar.
This.EnableExportButton= .T.
This.EnableProgressControl= .T.
This.enablestopButton =.T.
This.EnableCloseButton =.T.
This.EnableExportButton =.T.
This.EnablePopupMenu =.T.
This.EnableProgressControl =.T.
This.enableAnimationCtrl =.T.
This.enableHelpButton =.T.
This.enableSearchControl =.T.
This.enableselectExpertButton =.T.
This.EnableZoomControl = .T. && Zoom
*This.Zoom(100)
** Oculta el treeview.
This.DisplayGroupTree= .F.
This.DisplayToolbar = .T.
This.EnablePrintButton = .T. &&Imprime informe
This.EnableRefreshButton = .T. &&Acctualizar
This.Visible = .T.
*!* *** nuevos parametros
This.EnableInteractiveParameterPrompting = .T.
*!* * This.clisButtonClicked =.F.
Thisform.WindowState = 2
thisform.Width =1016
thisform.Height =615
This.Height = Thisform.Height
This.Width = Thisform.Height
This.top = 0
This.left =0
thisform.Resize()
Endproc
Procedure Resize
Thisform.oleCRViewer.Height = This.Height
Thisform.oleCRViewer.Width = This.Width
Endproc
Enddefine
P.D Intente enviarte el runtime, pero es muy grande, y no lo puede
adjuntar.
Suerte,
Luis turbi