Visual Fox Y Crystal Reports 8

878 views
Skip to first unread message

Mari

unread,
Mar 5, 2010, 11:16:10 AM3/5/10
to Mundo Visual FoxPro
Alguien tien eun ejemplo como Imprimir un reporte con crystal report o
un ejemplo gracias

Ing.Daniel Bojorge

unread,
Mar 6, 2010, 10:28:03 AM3/6/10
to mundovis...@googlegroups.com
Yo tengo para CR 8.5, si para el lunes no te han puesto ejemplo, yo acá con mucho gusto (ya en la oficina) te envío ejemplos.




Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)



El 5 de marzo de 2010 10:16, Mari <okplu...@hotmail.com> escribió:
Alguien tien eun ejemplo como Imprimir un reporte con crystal report o
un ejemplo gracias

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

TurbiSoft

unread,
Mar 11, 2010, 2:34:56 PM3/11/10
to Mundo Visual FoxPro
Saludo, y porque la 8.5, si foxpro funciona bien hasta la version
11.5, luego de ahi, es decir la 12 o 2008, se elimino el RDC.

Pero la version 11.5 funciona de maravilla.

Yvan GMAIL

unread,
Mar 11, 2010, 2:47:56 PM3/11/10
to Mundo Visual FoxPro
Hola amigos,

Tengo una consulta sobre trabajar con las īŋŊltimas versiones de Crystal y
Visual Fox..

Actualmente aun sigo trabajando con Crystal 7.0... y lo trabajo de la
siguiente forma.

1. En mi cīŋŊdigo genero un DBF.
Sele mi_cursor_con_data_filtrado
Copy to _temp001 type FOX2X

2. Ingreso al Crystal Report y diseīŋŊo mi reporte basado en el _temp001
(dbf).. y guardo mi archivo (mireporte.rpt)

3. Llamo al reporte desde el visual Fox

oReporte = CREATEOBJECT("Crystal.CrystalReport")
oReporte.ReportFilename = "MiReporte.rpt"
oReporte.DataFiles(0) = "tmp0001.dbf" && le pase el nombre de la tabla
temporal con datos
oReporte.Destination = 0
oReporte.Action = 1

En este caso el reporte se ve en una ventana aparte.. pero he visto que
otros insertar un control crystal en el formulario, y luego el reporte
se ve en el mismo formulario.

Pregunta:

Alguno d Uds. que tiene experencia con versiones superiores al 7.. cīŋŊmo lo
trabaja?.. Se puede aun trabajar del modo que estoy trabajando?..
Si tuvieran algun ejemplo simple.. (se lo agradeceria si lo pudieran
enviar).

Nota:
1. Esta forma me resultīŋŊ conveniente ya que el dbf temporal que genero ya
contiene la data filtrada y formateada.
2. Anteriormente recuerdo haber enlazado desde el .rpt un procedimiento
almacenado.. (Trabajaba con SQL SERVER), pero ahora trabajo con el
Postgresql, MySQL, V. Fox, SQL SERVER, por lo que si sigo trabajando
pasandole un dbf.. no importaria el motor.

Espero no haberlo aburrido con este extenso correo..

Gracias

Yvan Carranza
http://groups.google.com.pe/group/mundovisualfoxpro


__________ InformaciīŋŊn de ESET NOD32 Antivirus, versiīŋŊn de la base de firmas de virus 4936 (20100311) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

TurbiSoft

unread,
Mar 11, 2010, 3:07:58 PM3/11/10
to Mundo Visual FoxPro
Lo que estas haciendo, esta bien, aunque si ya disenaste el reporte,
no tienes para que volver a entrar y senalar la tabla de orgin de
datos

Eso lo haces desde foxpro, te paso la rutina que utilizo, trabajo con
VFP9 y CR11, por cierto, esta rutina ya la postea en un mensaje
anterior:

Para que esta rutina te funcione debes registrar los dll de la version
de crsytal que este usuando, si tienes la 7 como dices, debes poner en
comentarios algunas lineas con propiedades del objeto RDC, pues
obviamente no existian para esa version.


********************
Procedure CR_preview
********************
* Lic. Luis Alberto Turbi
* Genera una vista previa del Reporte
**************************
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

Return

** Definición de la clase del form de vista previa.
Define Class vista_previa As Form
Top = 0
Left = 0
Height = 288
Width = 480
DoCreate = .T.
Caption = "Vista previa del Reporte"
MinButton = .F.
WindowType = 1
Name = "vista_previa"
Comment ="Vista previa de reporte Crystal Reports"
Icon = 'logopld.ico'
** Se agrega el CrystalReports10.ActiveXReportViewer.1
* Version 11.0
* OleClass = "CrystalReports11.ActivexReportViewer.1", ;
** Mofificado para la version 11.5
Add Object oleCRViewer As OleControl With ;
OleClass = "CrystalReports115.ActivexReportViewer.1", ;
Top = 50, ;
Left = 0, ;
Height =288, ;
Width = 480, ;
Name = "oleCRViewer"

Add Object cmdsalir As CommandButton With ;
Top = 1, ;
Left = 1, ;
Height = 49, ;
Width = 95, ;
Picture = "..\graphics\16x16\openeddoor96.ico", ;
Cancel = .T., ;
Caption = "\<salir", ;
PicturePosition = 1, ;
Alignment = 2, ;
Name = "cmdSalir"

Procedure cmdsalir.Click
*!* Select mfactura
*!* Tablerevert(.T.)
*!* Select remesas
*!* Tablerevert(.T.)
*!* Select mcajas
*!* Tablerevert(.T.)
*!* Select secuen
*!* Tablerevert(.T.)
*!* Select CONFIG
*!* Tablerevert(.T.)

Thisform.Release
Endproc


Procedure Error
Lparameters nError, cMethod, nLine
If nError != 1440
DoDefault()
Endif
Endproc

Procedure Init
Lparameter toRpt
Thisform.WindowState = 2
Thisform.WindowType = 1
Thisform.BorderStyle = 3

If Type("oBarra") = "O"
oBarra.Visible = .F.
Endif
If Type("oBarra2") = "O"
oBarra.Visible = .F.
Endif
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.oleCRViewer.Top = 50
This.oleCRViewer.Left=0
This.oleCRViewer.Height = Thisform.Height
This.oleCRViewer.Width = Thisform.Width
Endproc

Procedure KeyPress
Lparameters nKeyCode, nShiftAltCtrl
If nKeyCode=27
Thisform.Release
Endif
If Lastkey()=27
Thisform.Release
Endif
Endproc


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.displayBorder =.T.
This.DisplayBackgroundEdge = .F. && No se maximisa la ventana de la
vista previa
This.EnableProgressControl= .T.

This.Visible = .T.
*!* *** nuevos parametros
* This.EnableInteractiveParameterPrompting = .F. && Solo en la version
11.5
* this.EnableParameterPrompting= .F. &&No Pregunta por los Parametros

* This.clisButtonClicked =.F.
Thisform.WindowState = 2
Thisform.Width =_Screen.Width
Thisform.Height =_Screen.Height
This.Height = Thisform.Height
This.Width = Thisform.Width
This.Top = 50
This.Left =0
Thisform.Resize()
Endproc

Procedure Resize
Thisform.oleCRViewer.Height = Thisform.Height
Thisform.oleCRViewer.Width = Thisform.Width
If Lastkey()=27
Thisform.Release
Endif

Endproc

Procedure Unload
If Type("oBarra") = "O"
oBarra.Visible = .T.
Endif
If Type("oBarra2") = "O"
oBarra.Visible = .T.
Endif

Endproc
Enddefine

Yvan GMAIL

unread,
Mar 11, 2010, 3:26:24 PM3/11/10
to mundovis...@googlegroups.com
Gracias por el dato amigo.

En este caso.. veo que trabajas con los .rpt.. c�mo estas enlazando la
data?... p.e. como haces con los dbf de visual fox?... o con Sql Server?...
la vez pasada estuve intentando armar un .rpt con CR11 y enlazarlo con un
DBF pero me arrojaba errores (no reconoc�a el formato).. igual quise jalar
el rpt en visual. y nada. (voy a intentar con tu rutina).-

Yvan Carranza
http://groups.google.com.pe/group/mundovisualfoxpro

Return

** Definici�n de la clase del form de vista previa.

Thisform.Release
Endproc


Procedure oleCRViewer.Init
** Muestra el bot�n de exportar.

Endproc

Endproc
Enddefine

--
_______________________________________________________________
Has recibido este mensaje porque est�s suscrito al Grupo "Mundo Visual


FoxPro" de Grupos de Google.

Para anular la suscripci�n a este grupo, env�a un mensaje a:
mundovisualfox...@googlegroups.com

__________ Informaci�n de ESET NOD32 Antivirus, versi�n de la base de firmas

de virus 4936 (20100311) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com


__________ Informaci�n de ESET NOD32 Antivirus, versi�n de la base de firmas de virus 4936 (20100311) __________

Guido Serrano

unread,
Mar 11, 2010, 8:46:28 PM3/11/10
to mundovis...@googlegroups.com
Algun prg que conecte con Cristal Report.  para que compartan??
se agradece..
Algun ejemplillo.



--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com



--
Atte.
Guido

TurbiSoft

unread,
Mar 12, 2010, 8:11:39 AM3/12/10
to Mundo Visual FoxPro
Saludo, Guido, no se a que te refieres con "Algun prg que conecte con
Cristal Report", pues en el ejemplo anteriro, eso es precisamente lo
que hago.


Yvan: la rutina anterior , recibe un parametro tipo objeto, que es el
reporte crystal Report previamente creado e instansiado, esta crea un
formulario y le agrega el ActiveX de crsytal report ( ...Add Object


oleCRViewer As OleControl With OleClass

"CrystalReports115.ActivexReportViewer.1"...), te anexo la rutina
principal que hace todo el enlace (ojo Guido),

La logica, si vamos a trabajar fox con CR, es crear un query en
foxpro, copiar el resultado a un .DBF y crear y/o diseñar el reporte
en CR con esta tabla, con la opcion archivos DBase, luego desde
foxpro, Instanciamos el objeto Crystal Report y el objeto reporte,
apuntando a nuestro reporte fisico.

Aqui esta la rutina Original que llama a la ruitna anterior, que
genera la vista previa.


********************** Query con los datos del reporte
Select temporal.* From temporal ;
WHERE temporal.codigo = Thisform.cboCuenta.Value ;
ORDER By codigo ;
INTO Cursor temporal

* Seccion Cristal Report 23-12-2009
If Thisform.lcrystalreport
Select temporal
Go Top
cTablaFox2= Addbs(Getenv("TEMP"))+ 'Temporal'+ ".DBF"
Copy To (cTablaFox2) Type Fox2x As 850
* return

Public oCrystalRep,oReporte As Object
oCrystalRep= Createobject("CrystalRuntime.Application.11")
cReporte = "RepMayorGeneral.RPT"

If File(cReporte)
oReporte= oCrystalRep.OpenReport(Fullpath(cReporte))
Else
Messagebox("Archivo de Reporte no localizado!!, Cancelando la
ejecucion...",48,_SYS)
Return
Endif

* Version CrsytalReport
*Store oCrystalRep.getVersion To nVersion
*WAIT WINDOW TRANSFORM(nVersion,'@0')
Store "" To cTablaFox2
cTablaFox2= Addbs(Getenv("TEMP"))+ Sys(3)+ ".DBF"
Copy To (cTablaFox2) Type Fox2x As 850

** Cambia la ubicación de la tabla en el reporte.
oReporte.Database.Tables(1).Location= cTablaFox2

** Descarta los datos que se hayan grabado con el reporte.
If oReporte.HasSavedData
oReporte.DiscardSavedData()
Wait Window "Tiene Datos Guardados"
Endif

*** Seccion Parametros
Local ocParm As CRAXDRT.ParameterFieldDefinitions
Local oParm,oParm2,oParm3,oParm4,oParm5,oParm6 As
CRAXDRT.ParameterFieldDefinition
Local nFondo,nCobros,nOtros,nCobrosDolar As Number
Store 0 To nFondo,nCobros,nOtros,nCobrosDolar
Select Temporal
Go Top

* Get the Special Message Parameter
ocParm = oReporte.ParameterFields()
oParm = ocParm.Item(1)
oParm2 = ocParm.Item(2)
oParm3 = ocParm.Item(3)
oParm4 = ocParm.Item(4)
oParm5 = ocParm.Item(5)
oParm6 = ocParm.Item(6)

* oParm.SetCurrentValue("This is the runtime special message")
oParm.AddCurrentValue(m.fechai)
oParm2.AddCurrentValue(m.fechaf)
oParm3.AddCurrentValue(m.letrero)
oParm4.AddCurrentValue(cMoneda)
oParm5.AddCurrentValue("Usuario: "+ cusuario)
* oParm6.AddCurrentValue(nOtros)

oReporte.EnableParameterPrompting= .F. &&No Pregunta por los
Parametros

* Manipulacion dinamica del logo
loAreas = oReporte.areas

Local loArea As oReporte.area
Local loSections As oReporte.sections
Local loSection As oReporte.Section
Local loReportObjects As oReporte.ReportObjects
Local loImagen As oReporte.Oleobject

loArea=loAreas.Item("PH") && page header
loSections=loArea.sections()
loSection=loSections.Item(1)
loImagen = loSection.AddPictureObject(Temporal.RUTALOGO,800,0)
loImagen.Height = 1500
loImagen.Width =2500

Y Recuerden que hay foxpro para rato...

cTabla = "Temporal"
cTitulo = "Mayor General"
Store .T. To lcrystalreport
Do Form frmPrinter
Store .F. To lcrystalreport

Try
Catch To oEr
=Messagebox("No Error : " + Transform(oEr.ErrorNo) + Chr(13) + ;
"No Línea : " + Transform(oEr.Lineno) + Chr(13) + ;
"Línea : " + oEr.LineContents + Chr(13) + ;
"Procedi..: " + oEr.Procedure + Chr(13) + ;
"Mensaje : " + oEr.Message + Chr(13))
Endtry

Release oCrystalRep,oReporte
Wait Window "Proceso Terminado!!" Nowait


Yvan GMAIL

unread,
Mar 12, 2010, 8:20:51 AM3/12/10
to mundovis...@googlegroups.com
Gracias Turbisoft,

Pens� que con las versiones superiores a la 7.. no se pod�a seguir
trabajando con DBF (formato dbase). Ya que como te coment� en el correo
anterior.. hace un buen tiempo intent� hacer lo mismo con el CR 11 y no me
reconoc�a la tabla.

Por otro lado.. C�mo trabajas las im�genes Visual Fox - CR ?.. En este punto
me tope con un problemilla... ya que al enlazar con el DBF (formato DBASE),
ya no pod�a enviar im�genes. por lo que a parte me creaba un DBF normal y lo
enlazaba a un ODBC.. y luego creaba mi rpt.. enlazando al ODBC.

Disc�lpame amigo Guido por haber tomado tu Tema.

Adjunto el Reporte que quiero lograr pero con versiones superiores al 7.0..
(Esto lo manejo con la V. 7 v�a ODBC)


Yvan Carranza
http://groups.google.com.pe/group/mundovisualfoxpro
----- Original Message -----
From: "TurbiSoft" <vbsco...@Hotmail.com>
To: "Mundo Visual FoxPro" <mundovis...@googlegroups.com>

Sent: Friday, March 12, 2010 8:11 AM
Subject: [Mundo Visual FoxPro] Re: Visual Fox Y Crystal Reports 8


Saludo, Guido, no se a que te refieres con "Algun prg que conecte con
Cristal Report", pues en el ejemplo anteriro, eso es precisamente lo
que hago.


Yvan: la rutina anterior , recibe un parametro tipo objeto, que es el
reporte crystal Report previamente creado e instansiado, esta crea un
formulario y le agrega el ActiveX de crsytal report ( ...Add Object
oleCRViewer As OleControl With OleClass
"CrystalReports115.ActivexReportViewer.1"...), te anexo la rutina
principal que hace todo el enlace (ojo Guido),

La logica, si vamos a trabajar fox con CR, es crear un query en

foxpro, copiar el resultado a un .DBF y crear y/o dise�ar el reporte

** Cambia la ubicaci�n de la tabla en el reporte.
oReporte.Database.Tables(1).Location= cTablaFox2

"No L�nea : " + Transform(oEr.Lineno) + Chr(13) + ;
"L�nea : " + oEr.LineContents + Chr(13) + ;


"Procedi..: " + oEr.Procedure + Chr(13) + ;
"Mensaje : " + oEr.Message + Chr(13))
Endtry

Release oCrystalRep,oReporte
Wait Window "Proceso Terminado!!" Nowait


--
_______________________________________________________________
Has recibido este mensaje porque est�s suscrito al Grupo "Mundo Visual


FoxPro" de Grupos de Google.

Para anular la suscripci�n a este grupo, env�a un mensaje a:
mundovisualfox...@googlegroups.com

SAMPLE.pdf

TurbiSoft

unread,
Mar 12, 2010, 8:23:02 AM3/12/10
to Mundo Visual FoxPro
Ojo: l
La linea que dice : Do Form
frmPrinter && Llama un form que
parametriza la salida del reporte
la pueden reeplazar por esta: DO CR_preview WITH
oReporte && Llama la rutina que hace una vista
previa del reporte

TurbiSoft

unread,
Mar 12, 2010, 8:31:39 AM3/12/10
to Mundo Visual FoxPro
Las imagnes la maniupulo de forma dinamica, por lo general,
almacenando la ruta de las imagenes en campos tipo char o Varchar, y
mediante codigo agrego el objeto imagen de crsytal report.

Esto es un ejemplo para desplegar el logo de la compania, la cual la
almaceno en la tabla de configuracion de mi sistema:


* Manipulacion dinamica del logo
loAreas = oReporte.areas


Local loArea As oReporte.area
Local loSections As oReporte.sections
Local loSection As oReporte.Section
Local loReportObjects As oReporte.ReportObjects
Local loImagen As oReporte.Oleobject


loArea=loAreas.Item("PH") && page header
loSections=loArea.sections()
loSection=loSections.Item(1)
loImagen = loSection.AddPictureObject(Temporal.RUTALOGO,
800,0)
loImagen.Height = 1500
loImagen.Width =2500


Temporal.Rutalogo, es el campo que contiene la ruta o nombre
del archivo grafico

Suerte,

Busca en posteos anteriores, hay un Ebook de CR y Foxpro, es muy
bueno. tambien lo puedes buscar en Gooble, es de Craig, esta en
ingles, pero es super.

Yvan GMAIL

unread,
Mar 12, 2010, 8:38:17 AM3/12/10
to mundovis...@googlegroups.com
Gracias amigo.. m�s decidido a cambiar de versi�n.. yo igual manejo de
manera din�mica las im�genes.. pero ya lo env�o en el DBF insertado en un
campo BLOB - IMAGE. Ya que como viste la ficha en la �ltima p�gina tenia una
imagen.. pero hay reportes.. que manejan de 5 para arriba.. y son
variables.. de acuerdo a lo que el usuario enlaza a dicha ficha.

Voy a buscar el post.

Yvan Carranza
http://groups.google.com.pe/group/mundovisualfoxpro
----- Original Message -----
From: "TurbiSoft" <vbsco...@Hotmail.com>
To: "Mundo Visual FoxPro" <mundovis...@googlegroups.com>
Sent: Friday, March 12, 2010 8:31 AM
Subject: [Mundo Visual FoxPro] Re: Visual Fox Y Crystal Reports 8

Suerte,

--
_______________________________________________________________
Has recibido este mensaje porque est�s suscrito al Grupo "Mundo Visual


FoxPro" de Grupos de Google.

Para anular la suscripci�n a este grupo, env�a un mensaje a:
mundovisualfox...@googlegroups.com

Reply all
Reply to author
Forward
0 new messages