Página 1 de 1
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 10:05 am
por antonio.ortega
¿Se pueden agregar columnas a un Reporte dentro de un For...Next?... la
idea es hacer un report de un browse, por ejm
For nI := 1 To Len( oBrw:aCols )
With Object oCol := oRpt:AddColumn()
:bHeader := { &( "{|| oBrw:aCols[" + Str(nI) + '] }' }
:bData := { &( "{|| oBrw:aCols[" + Str(nI) +
']:oDataField:FieldGet() }' }
End
Next
No se en que me estoy equivocando pero me da un error en runtime, cuando
evalúa el bData, el bHeader lo hace bien, si alguien tiene algún ejemplo o
se le ocurre alguna idea, será bienevenido.
Gracias.
Antonio F. Ortega
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 10:17 am
por ignacio
Antonio,
El problema es que nI siempre vale para cualquier columna Len( oBrw:aCols )
+ 1 ya que es el valor que tiene cuando se ejecutan los codeblock.
El truco consiste en hacer lo que se llama 'detached locals' que se ha
explicado en multitud de ocasiones en este y otros foros de Harbour. Te
ruego por favor lo busques entre los mensajes del foro. Gracias
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Antonio F. Ortega" <
antonio.ortega@puentelibros.com> escribió en el mensaje
news:47219fb7$[email=
1@ozsrv2.ozlan.local...]
1@ozsrv2.ozlan.local...[/email]
> ¿Se pueden agregar columnas a un Reporte dentro de un For...Next?... la
> idea es hacer un report de un browse, por ejm
>
> For nI := 1 To Len( oBrw:aCols )
> With Object oCol := oRpt:AddColumn()
> :bHeader := { &( "{|| oBrw:aCols[" + Str(nI) + '] }' }
> :bData := { &( "{|| oBrw:aCols[" + Str(nI) +
> ']:oDataField:FieldGet() }' }
> End
> Next
>
> No se en que me estoy equivocando pero me da un error en runtime, cuando
> evalúa el bData, el bHeader lo hace bien, si alguien tiene algún ejemplo o
> se le ocurre alguna idea, será bienevenido.
>
> Gracias.
>
> Antonio F. Ortega
>
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 10:45 am
por desarrollo
Antonio,
Hay un mensaje mio en el foro publico del 19.09 (TReport con arrays) en el
que pongo un ejemplo de como usar FOR ... NEXT con TReport. Mira a ver si te
vale.
Saludos
Jose A. Suarez
"Antonio F. Ortega" <
antonio.ortega@puentelibros.com> escribió en el mensaje
news:47219fb7$[email=
1@ozsrv2.ozlan.local...]
1@ozsrv2.ozlan.local...[/email]
> ¿Se pueden agregar columnas a un Reporte dentro de un For...Next?... la
> idea es hacer un report de un browse, por ejm
>
> For nI := 1 To Len( oBrw:aCols )
> With Object oCol := oRpt:AddColumn()
> :bHeader := { &( "{|| oBrw:aCols[" + Str(nI) + '] }' }
> :bData := { &( "{|| oBrw:aCols[" + Str(nI) +
> ']:oDataField:FieldGet() }' }
> End
> Next
>
> No se en que me estoy equivocando pero me da un error en runtime, cuando
> evalúa el bData, el bHeader lo hace bien, si alguien tiene algún ejemplo o
> se le ocurre alguna idea, será bienevenido.
>
> Gracias.
>
> Antonio F. Ortega
>
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 12:12 pm
por antonio.ortega
Gracias JASM, claro que me vale, ya lo he visto y lo he aplicado
For nI := 1 To nLen
cDato := "oBrw:aArrayData[ nFila," + AllTrim( Str(nI) ) + " ]"
cTitle := "oBrw:aCols[" + AllStr(nI) + " ]:cHeader"
With Object oCol := oReport:AddColumn()
:aTitle := { { || &cTitle. } } **** ¿ Que es esto ? ****
:aData := { { || &cDato. } } **** ¿ Que es esto ? ****
:Create()
End With
Next
El &cTitle. no lo sabía no lo había visto nunca me reifiero claro esta al punto del final. por eso pregunto **** ¿Que es esto? ****
Ignacio:
lo de las 'detached locals' lo se y lo he aplicado ... pero aún así se ve que no lo he hecho bien y me daba un error en runtime , y pensé que había otra forma de hacerlo, de hecho que he encontrado lo que hizo JASM y no lo había visto nunca, no se si será también valido para los DBBrowse, si me lo puedes confirmar te lo agradeceré.
Gracias.
Antonio F. Ortega
--
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 12:56 pm
por ignacio
Antonio,
Jose Alfonso utiliza macros que también son perfectamente válidos (el punto indica el final de la macro) pero que no son 'detached locals'.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Antonio F. Ortega" <
antonio.ortega@puentelibros.com> escribió en el mensaje news:4721bd8d$[email=
1@ozsrv2.ozlan.local...]
1@ozsrv2.ozlan.local...[/email]
Gracias JASM, claro que me vale, ya lo he visto y lo he aplicado
For nI := 1 To nLen
cDato := "oBrw:aArrayData[ nFila," + AllTrim( Str(nI) ) + " ]"
cTitle := "oBrw:aCols[" + AllStr(nI) + " ]:cHeader"
With Object oCol := oReport:AddColumn()
:aTitle := { { || &cTitle. } } **** ¿ Que es esto ? ****
:aData := { { || &cDato. } } **** ¿ Que es esto ? ****
:Create()
End With
Next
El &cTitle. no lo sabía no lo había visto nunca me reifiero claro esta al punto del final. por eso pregunto **** ¿Que es esto? ****
Ignacio:
lo de las 'detached locals' lo se y lo he aplicado ... pero aún así se ve que no lo he hecho bien y me daba un error en runtime , y pensé que había otra forma de hacerlo, de hecho que he encontrado lo que hizo JASM y no lo había visto nunca, no se si será también valido para los DBBrowse, si me lo puedes confirmar te lo agradeceré.
Gracias.
Antonio F. Ortega
--
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 1:07 pm
por antonio.ortega
Gracias Ignacio, se ve que sin el punto final la macro no funciona, no sabía que deben llevar punto.
Antonio F. Ortega
--
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 1:28 pm
por antonio.ortega
Me corrijo, si funciona sin el punto.
Antonio F. Ortega
--
Report de un DBBrowse
Publicado: Vie Oct 26, 2007 1:45 pm
por desarrollo
Antonio,
El punto es una costumbre clippera. Esa construccion no funcionaba en Clipper sin el punto.
Saludos
Jose A. Suarez
"Antonio F. Ortega" <
antonio.ortega@puentelibros.com> escribió en el mensaje news:4721cf78$[email=
1@ozsrv2.ozlan.local...]
1@ozsrv2.ozlan.local...[/email]
Me corrijo, si funciona sin el punto.
Antonio F. Ortega
--
Report de un DBBrowse
Publicado: Sab Oct 27, 2007 11:20 am
por antonio.ortega
Ignacio, tenía la sensación de que no era cuestión de 'trucos' o 'magia'
:-) , pero lo quería confirmar y efectivamente el código del primer
mensaje es correcto, porque estoy utilizando macros. luego de revisar y
revisar el código y de consultarlo con un colega me doy cuenta que el
problema es el siguiente, un DBBrowse que tiene un DataSet que es un
TSQLQuery ( SQLiteDataSource ) muestra los datos correctamente, pero
cuando intento lanzar el reporte, los valores Nil que si admite el
DBBrowse, no son admitidos por el Report.
¿ En tu opinión cuál es la solución ?.
Gracias.
Saludos.
Antonio F. Ortega
Ignacio Ortiz de Zúñiga escribió:
> Antonio,
>
> El problema es que nI siempre vale para cualquier columna Len( oBrw:aCols )
> + 1 ya que es el valor que tiene cuando se ejecutan los codeblock.
>
> El truco consiste en hacer lo que se llama 'detached locals' que se ha
> explicado en multitud de ocasiones en este y otros foros de Harbour. Te
> ruego por favor lo busques entre los mensajes del foro. Gracias
>
> Un saludo
>
Report de un DBBrowse
Publicado: Mié Oct 31, 2007 10:48 am
por antonio.ortega
el problema es el siguiente, un DBBrowse que tiene un DataSet que es un
TSQLQuery ( SQLiteDataSource ) muestra los datos correctamente, pero
cuando intento lanzar el reporte, los valores Nil que si admite el
DBBrowse, no son admitidos por el Report.
¿ Como lo puedo solucionar ?
Antonio F. Ortega
Report de un DBBrowse
Publicado: Mié Oct 31, 2007 11:08 am
por ignacio
Antonio,
Utilizar expresiones del tipo:
IIF( oDataField:Value != NIL, oDataFieldValue, "" )
Saludos
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Antonio F. Ortega" <
antonio.ortega@ono.com> escribió en el mensaje
news:472302ee$[email=
1@ozsrv2.ozlan.local...]
1@ozsrv2.ozlan.local...[/email]
> Ignacio, tenía la sensación de que no era cuestión de 'trucos' o 'magia'
>

, pero lo quería confirmar y efectivamente el código del primer
> mensaje es correcto, porque estoy utilizando macros. luego de revisar y
> revisar el código y de consultarlo con un colega me doy cuenta que el
> problema es el siguiente, un DBBrowse que tiene un DataSet que es un
> TSQLQuery ( SQLiteDataSource ) muestra los datos correctamente, pero
> cuando intento lanzar el reporte, los valores Nil que si admite el
> DBBrowse, no son admitidos por el Report.
>
> ¿ En tu opinión cuál es la solución ?.
>
> Gracias.
>
> Saludos.
>
> Antonio F. Ortega
>
>
> Ignacio Ortiz de Zúñiga escribió:
>> Antonio,
>>
>> El problema es que nI siempre vale para cualquier columna Len(
>> oBrw:aCols ) + 1 ya que es el valor que tiene cuando se ejecutan los
>> codeblock.
>>
>> El truco consiste en hacer lo que se llama 'detached locals' que se ha
>> explicado en multitud de ocasiones en este y otros foros de Harbour. Te
>> ruego por favor lo busques entre los mensajes del foro. Gracias
>>
>> Un saludo
>>
Report de un DBBrowse
Publicado: Mié Oct 31, 2007 6:59 pm
por antonio.ortega
Ignacio,
Vale, es lógico para salir del paso, me imagino que es deseable que lo
controle la clase report, puesto que ya lo controla la clase browse.
Gracias.
Antonio F. Ortega