Página 1 de 1

Crystal y Xailer

Publicado: Vie Jun 09, 2006 7:22 pm
por Margarita Valdez
Hola
Tengo un programa que genera un reporte de crystal
este es el codigo,
oRep := oApp:OpenReport(CurDrive() + ':' + CurDir() +
'reportesrptInstructoresInstitucion.rpt')
WITH OBJECT Tini():New(".config.ini")
oDb := oRep:Database()
oTablas := oDb:Tables()
nTables := oTablas:Count()
FOR nTab := 1 TO nTables
oDb:Tables(nTab):SetLogOnInfo(:GetEntry("CONFIG","SERVER", ""),
:GetEntry("CONFIG","BD", ""), :GetEntry("CONFIG","ID", ""),
:GetEntry("CONFIG","PWD", ""))
NEXt
END
oRep:Preview("Idioma")
lo que suscede es que el reporte me lo presenta y lo cierra, no lo deja
abierto.. alguien me puede decir como arreglarlo.

Crystal y Xailer

Publicado: Dom Jun 11, 2006 11:05 pm
por jose.luis
Hola,
¿Tienes algún ejemplo donde se pueda reproducir ese comportamiento?
Por cierto: el método oApp:OpenReport ¿donde lo obtienes? ¿Cual es el objeto
ole que usas?
Saludos,
José Luis Capel
"Margarita Valdez" <margarita@apsi.com.mx> escribió en el mensaje
news:[email=4489ae3b@ozsrvnegro.ozlan.local...]4489ae3b@ozsrvnegro.ozlan.local...[/email]
> Hola
> Tengo un programa que genera un reporte de crystal
> este es el codigo,
>
> oRep := oApp:OpenReport(CurDrive() + ':' + CurDir() +
> 'reportesrptInstructoresInstitucion.rpt')
>
> WITH OBJECT Tini():New(".config.ini")
> oDb := oRep:Database()
> oTablas := oDb:Tables()
> nTables := oTablas:Count()
> FOR nTab := 1 TO nTables
> oDb:Tables(nTab):SetLogOnInfo(:GetEntry("CONFIG","SERVER", ""),
> :GetEntry("CONFIG","BD", ""), :GetEntry("CONFIG","ID", ""),
> :GetEntry("CONFIG","PWD", ""))
> NEXt
> END
>
> oRep:Preview("Idioma")
>
> lo que suscede es que el reporte me lo presenta y lo cierra, no lo deja
> abierto.. alguien me puede decir como arreglarlo.
>
>

Crystal y Xailer

Publicado: Lun Jun 12, 2006 7:13 pm
por jfgimenez
Margarita,
> lo que suscede es que el reporte me lo presenta y lo cierra, no lo deja
> abierto.. alguien me puede decir como arreglarlo.
Por favor, muestra un ejemplo pequeño pero completo que podamos probar.
--
Un saludo,
José F. Giménez
http://www.xailer.com

Crystal y Xailer

Publicado: Mar Jun 13, 2006 12:48 am
por Margarita Valdez
hola
esta es la funcion, solo hice el reporte en crystal, y lo mando llamar asi
simplemente.
no agrego ninguna otra cosa ningun objeto, ni referencias, nada mas.
METHOD btnImprimirClick( oSender ) CLASS TProgramaCurso
local oApp:= TOLEAUTO():New("Crystal.CRPE.Application")
local oDB
local oTabla
local nTables
local nTab
local oRep
local forma
local oView
oRep := oApp:OpenReport(CurDrive() + ':' + CurDir() +
'reportesrptInstructoresInstitucion.rpt')
WITH OBJECT Tini():New(".config.ini")
oDb := oRep:Database()
oTablas := oDb:Tables()
nTables := oTablas:Count()
FOR nTab := 1 TO nTables
oDb:Tables(nTab):SetLogOnInfo(:GetEntry("CONFIG","SERVER", ""),
:GetEntry("CONFIG","BD", ""), ;
:GetEntry("CONFIG","ID", ""),
:GetEntry("CONFIG","PWD", ""))
NEXt
END
oRep:Preview("Lugares")
RETURN Nil
saludos!!
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:448da0d0$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Margarita,
>
>> lo que suscede es que el reporte me lo presenta y lo cierra, no lo deja
>> abierto.. alguien me puede decir como arreglarlo.
>
> Por favor, muestra un ejemplo pequeño pero completo que podamos probar.
>
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>

Crystal y Xailer

Publicado: Mié Jun 14, 2006 2:38 pm
por jfgimenez
Margarita,
he estado revisando otros ejemplos y he visto que el problema que tienes se
debe a que la conexión OLE se corta. La causa es que estás usando variables
locales para crear los objetos OLE, y cuando sales del método, el propio
xHarbour las destruye, cortando así la conexión. Por eso desaparece
inmediatamente el preview.
La solución consiste en mantener esas variables que contienen los objetos
OLE mientras esté visible el preview. Puedes hacerlo usando variables
estáticas, como DATAs de una clase o mecanismos similares.
Por otro lado, he hecho una clase que lanza un report de CR en su preview, y
permite mostrarlo en Xailer tanto en MDIChild como en modal o normal. Si la
quieres te la puedo enviar.
--
Un saludo,
José F. Giménez
http://www.xailer.com

Crystal y Xailer

Publicado: Mié Jun 14, 2006 10:26 pm
por Rolando
Póngala aqui maestro, y muchas gracias.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:44900358$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Margarita,
>
> he estado revisando otros ejemplos y he visto que el problema que tienes
> se debe a que la conexión OLE se corta. La causa es que estás usando
> variables locales para crear los objetos OLE, y cuando sales del método,
> el propio xHarbour las destruye, cortando así la conexión. Por eso
> desaparece inmediatamente el preview.
>
> La solución consiste en mantener esas variables que contienen los objetos
> OLE mientras esté visible el preview. Puedes hacerlo usando variables
> estáticas, como DATAs de una clase o mecanismos similares.
>
> Por otro lado, he hecho una clase que lanza un report de CR en su preview,
> y permite mostrarlo en Xailer tanto en MDIChild como en modal o normal. Si
> la quieres te la puedo enviar.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>

Crystal y Xailer

Publicado: Jue Jun 15, 2006 12:42 am
por jfgimenez
Rolando,
> Póngala aqui maestro, y muchas gracias.
Bien, aquí está. He de reconocer que parte del mérito es de René Flores. La
forma de usarla es la siguiente:
Como MDIChild:
WITH OBJECT TCrystalPreview()
:nFormType := ftMDICHILD
:New( Self )
:cReport := ".Subcue01.rpt"
:Show( smMAXIMIZE )
END
Modal:
WITH OBJECT TCrystalPreview():New( Self )
:cReport := ".Subcue01.rpt"
:ShowModal( smMAXIMIZE )
END
No modal:
WITH OBJECT TCrystalPreview():New( Self )
:cReport := ".Subcue01.rpt"
:Show( smMAXIMIZE )
END
Hay que tener en cuenta que sirve para lanzar un report directo, es decir,
que no necesita abrir tablas o suministrar nombre de usuario y contraseña.
En ese caso habría que hacerlo a mano o completar la clase. Por cierto, si
alguien quiere completar la clase y ponerla a disposición de todos, sólo
tiene que enviárnosla para que la publiquemos.
--
Un saludo,
José F. Giménez
http://www.xailer.com


Attached files CR.zip (684 B)Â

Crystal y Xailer

Publicado: Sab Jun 17, 2006 1:37 am
por Margarita Valdez
Hola,
Le hice estos cambios a la clase para que pudiera conectarse a las tablas y
recibir parametros.
Saludos.
#include "Xailer.ch"
//---------------------------------------------------------- --------------------
CLASS TCrystalPreview FROM TForm
PROPERTY cText INIT "Crystal Reports Preview"
PROPERTY cReport
DATA oCRApp, oCRReport, hPreview
DATA nTab, oDb, oTablas, nTables
METHOD Show( nShowMode, lCenter )
METHOD Free()
METHOD GoNextControl() VIRTUAL
METHOD GoPrevControl() VIRTUAL
METHOD WMSize()
METHOD Crea()
METHOD Parametro( Nombre, Parametro )
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD Parametro( Nombre, Parametro ) CLASS TCrystalPreview
::oCRReport:ParameterFields(Nombre):setCurrentValue(Parametr o)
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD Crea() CLASS TCrystalPreview
IF Empty( ::Handle )
::Create()
ENDIF
::oCRApp := CreateObject( "Crystal.CRPE.Application" )
::oCRReport := ::oCRApp:OpenReport( ::cReport )
::oDb := ::oCRReport:Database()
::oTablas := ::oDb:Tables()
::nTables := ::oTablas:Count()
WITH OBJECT Tini():New(".config.ini")
FOR ::nTab := 1 TO ::nTables
::oDb:Tables(::nTab):SetLogOnInfo(:GetEntry("CONFIG","SERVER ", ""),
:GetEntry("CONFIG","BD", ""), ;
:GetEntry("CONFIG","ID", ""),
:GetEntry("CONFIG","PWD", ""))
NEXt
end
RETURN NIL
//---------------------------------------------------------- --------------------
METHOD Show( nShowMode, lCenter ) CLASS TCrystalPreview
::oCRReport:Preview( "", 0, 0, 0, 0, WS_CHILD, ::Handle )
::hPreview := GetWindow( ::Handle, GW_CHILD )
Super:Show( nShowMode, lCenter )
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD Free() CLASS TCrystalPreview
IF ::oCRReport != Nil
::oCRReport := Nil
::oCRApp := Nil
ENDIF
RETURN Super:Free()
//---------------------------------------------------------- --------------------
METHOD WMSize( nWParam, nLParam ) CLASS TCrystalPreview
MoveWindow( ::hPreview, 0, 0, LoWord( nLParam ), HiWord( nLParam ) )
RETURN Nil
//---------------------------------------------------------- --------------------
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:449090dc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Rolando,
>
>> Póngala aqui maestro, y muchas gracias.
>
> Bien, aquí está. He de reconocer que parte del mérito es de René Flores.
> La forma de usarla es la siguiente:
>
> Como MDIChild:
>
> WITH OBJECT TCrystalPreview()
> :nFormType := ftMDICHILD
> :New( Self )
> :cReport := ".Subcue01.rpt"
> :Show( smMAXIMIZE )
> END
>
> Modal:
>
> WITH OBJECT TCrystalPreview():New( Self )
> :cReport := ".Subcue01.rpt"
> :ShowModal( smMAXIMIZE )
> END
>
> No modal:
>
> WITH OBJECT TCrystalPreview():New( Self )
> :cReport := ".Subcue01.rpt"
> :Show( smMAXIMIZE )
> END
>
>
> Hay que tener en cuenta que sirve para lanzar un report directo, es decir,
> que no necesita abrir tablas o suministrar nombre de usuario y contraseña.
> En ese caso habría que hacerlo a mano o completar la clase. Por cierto, si
> alguien quiere completar la clase y ponerla a disposición de todos, sólo
> tiene que enviárnosla para que la publiquemos.
>
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>

Crystal y Xailer

Publicado: Dom Jun 25, 2006 4:00 pm
por Rolando
Hola: hay información muy jugosa en este blog, alguien sabe si está en
español en otra parte? http://www.sailingwithxailer.blogspot.com/
"Margarita Valdez" <margarita@apsi.com.mx> escribió en el mensaje
news:449340a9$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola,
> Le hice estos cambios a la clase para que pudiera conectarse a las tablas
> y recibir parametros.
> Saludos.
>
>
> #include "Xailer.ch"
>
> //---------------------------------------------------------- --------------------
>
> CLASS TCrystalPreview FROM TForm
>
> PROPERTY cText INIT "Crystal Reports Preview"
> PROPERTY cReport
>
> DATA oCRApp, oCRReport, hPreview
> DATA nTab, oDb, oTablas, nTables
>
> METHOD Show( nShowMode, lCenter )
> METHOD Free()
> METHOD GoNextControl() VIRTUAL
> METHOD GoPrevControl() VIRTUAL
> METHOD WMSize()
> METHOD Crea()
> METHOD Parametro( Nombre, Parametro )
>
> ENDCLASS
> //---------------------------------------------------------- --------------------
> METHOD Parametro( Nombre, Parametro ) CLASS TCrystalPreview
> ::oCRReport:ParameterFields(Nombre):setCurrentValue(Parametr o)
> RETURN Nil
> //---------------------------------------------------------- --------------------
> METHOD Crea() CLASS TCrystalPreview
>
> IF Empty( ::Handle )
> ::Create()
> ENDIF
>
> ::oCRApp := CreateObject( "Crystal.CRPE.Application" )
> ::oCRReport := ::oCRApp:OpenReport( ::cReport )
>
> ::oDb := ::oCRReport:Database()
> ::oTablas := ::oDb:Tables()
> ::nTables := ::oTablas:Count()
> WITH OBJECT Tini():New(".config.ini")
> FOR ::nTab := 1 TO ::nTables
> ::oDb:Tables(::nTab):SetLogOnInfo(:GetEntry("CONFIG","SERVER ",
> ""), :GetEntry("CONFIG","BD", ""), ;
> :GetEntry("CONFIG","ID", ""),
> :GetEntry("CONFIG","PWD", ""))
> NEXt
> end
>
> RETURN NIL
> //---------------------------------------------------------- --------------------
> METHOD Show( nShowMode, lCenter ) CLASS TCrystalPreview
>
> ::oCRReport:Preview( "", 0, 0, 0, 0, WS_CHILD, ::Handle )
> ::hPreview := GetWindow( ::Handle, GW_CHILD )
> Super:Show( nShowMode, lCenter )
>
> RETURN Nil
>
> //---------------------------------------------------------- --------------------
>
> METHOD Free() CLASS TCrystalPreview
>
> IF ::oCRReport != Nil
> ::oCRReport := Nil
> ::oCRApp := Nil
> ENDIF
>
> RETURN Super:Free()
>
> //---------------------------------------------------------- --------------------
>
> METHOD WMSize( nWParam, nLParam ) CLASS TCrystalPreview
>
> MoveWindow( ::hPreview, 0, 0, LoWord( nLParam ), HiWord( nLParam ) )
>
> RETURN Nil
>
> //---------------------------------------------------------- --------------------
>
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> news:449090dc$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Rolando,
>>
>>> Póngala aqui maestro, y muchas gracias.
>>
>> Bien, aquí está. He de reconocer que parte del mérito es de René Flores.
>> La forma de usarla es la siguiente:
>>
>> Como MDIChild:
>>
>> WITH OBJECT TCrystalPreview()
>> :nFormType := ftMDICHILD
>> :New( Self )
>> :cReport := ".Subcue01.rpt"
>> :Show( smMAXIMIZE )
>> END
>>
>> Modal:
>>
>> WITH OBJECT TCrystalPreview():New( Self )
>> :cReport := ".Subcue01.rpt"
>> :ShowModal( smMAXIMIZE )
>> END
>>
>> No modal:
>>
>> WITH OBJECT TCrystalPreview():New( Self )
>> :cReport := ".Subcue01.rpt"
>> :Show( smMAXIMIZE )
>> END
>>
>>
>> Hay que tener en cuenta que sirve para lanzar un report directo, es
>> decir, que no necesita abrir tablas o suministrar nombre de usuario y
>> contraseña. En ese caso habría que hacerlo a mano o completar la clase.
>> Por cierto, si alguien quiere completar la clase y ponerla a disposición
>> de todos, sólo tiene que enviárnosla para que la publiquemos.
>>
>>
>> --
>> Un saludo,
>>
>> José F. Giménez
>> http://www.xailer.com
>>
>>
>
>

Crystal y Xailer

Publicado: Dom Jun 25, 2006 10:07 pm
por jfgimenez
Rolando,
> Hola: hay información muy jugosa en este blog, alguien sabe si está en
> español en otra parte? http://www.sailingwithxailer.blogspot.com/
El mismo artículo, escrito por la misma persona (René Flores), pero en
español, lo tienes en:
http://objetopersistente.blogspot.com/2 ... er-y-cryst al-reports.html
--
Un saludo,
José F. Giménez
http://www.xailer.com