FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour tsbrowse 8 y excelole() con numeros decimales
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM

tsbrowse 8 y excelole() con numeros decimales

Posted: Wed Nov 04, 2009 08:40 PM

hola:

al traspasar una tabla DBF utilizando oBrw:ExcelOle(), la columna que contiene un campo numerico con decimales (con formato 9999.99), queda cargada a la izquierda y no es procesada como campo numerico, hay que cambiar manualmente a 9999,9 para que excel la considere com numerica y puedan hacerse operaciones matematicas con esta columna.

la pregunta es 驴 C贸mo puedo cambiar el "." por la "," en el METHOD ExcelOle() para que cuando realize el traspaso a una planilla excel quede automaticamente como Numero y sus respectivos decimales?..

pd. los numeros sin decimales actuan en forma normal.

desde ya gracias.

SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM

Re: tsbrowse 8 y excelole() con numeros decimales

Posted: Wed Nov 04, 2009 11:25 PM

disculpa que browse estas usando ?

yo uso xbrowse y el method se llama oBrw:ToExcel()

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM

Re: tsbrowse 8 y excelole() con numeros decimales

Posted: Wed Nov 04, 2009 11:30 PM

perdon Armando, ya mire que usas TSBRW sorry.

a mi me paso algo similar, pero con la txbrw y tuve que modificar las class para evitar que suprimiera los decimales..

saludos...

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM

Re: tsbrowse 8 y excelole() con numeros decimales

Posted: Thu Nov 05, 2009 02:51 AM

la idea es modificar algo en el metodo que maneja la sbrowse version 8.

creo que esta aqui, lina 3843 de la clase, pero no estoy seguro.

     If ::aColumns[ nCol ]:cPicture != Nil
        uData := Transform( uData, ::aColumns[ nCol ]:cPicture )
     EndIf

     uData  :=  IIF( ValType( uData )=="D", DtoC( uData ), ;
<!-- s:?: --><img src="{SMILIES_PATH}/icon_question.gif" alt=":?:" title="Question" /><!-- s:?: --> aqui--&gt;     IIF( ValType( uData )==&quot;N&quot;, Str( uData ) , ; &lt;-- <!-- s:?: --><img src="{SMILIES_PATH}/icon_question.gif" alt=":?:" title="Question" /><!-- s:?: --> 
                    IIF( ValType( uData )==&quot;L&quot;, IIF( uData ,&quot;.T.&quot; ,&quot;.F.&quot; ), cValToChar( uData )))

     cText += Trim( uData ) + Chr( 9 )

pero no se como realizar el cambio correcto...

espero que me ayuden...

SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM

Re: tsbrowse 8 y excelole() con numeros decimales

Posted: Thu Nov 05, 2009 07:20 AM
Hola Armando:
armando.lagunas wrote:la idea es modificar algo en el metodo que maneja la sbrowse version 8.
creo que esta aqui, lina 3843 de la clase, pero no estoy seguro.

No es necesaria ninguna modificaci贸n a la Clase, el m茅todo ExcelOle admite un par谩metro (s茅ptimo) con el que puedes manipular la hoja de excel a tu antojo, dicho parametro es un bloque de c贸digo que se evaluar谩 al momento de la creaci贸n de la hoja.

Aqu铆 te muestro un ejemplo:
Code (fw): Select all Collapse
聽聽 bExtern := {|oSheet| oSheet:Columns( 10 ):Set( "NumberFormat", "#,##0.00" ) }

聽 聽Define Button OF oBar Resource "Excel" ;
聽 聽 聽 聽 聽 Action oBrw:ExcelOle( "Test.xls", .T.,, cTitle,,, bExtern ) ;
聽 聽 聽 聽 聽 ToolTip "Export Browse to Excel"

En el bloque del ejemplo se est谩 asignando el formato num茅rico que se indica a todas las celdas de la columna 10.

Un abrazo.
manuelmercado at prodigy dot net dot mx
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM

Re: tsbrowse 8 y excelole() con numeros decimales

Posted: Fri Nov 06, 2009 04:17 PM

Estimado Manuel

utilice su sugerencia y result贸 bien, pero para una sola columna, la tabla que llevo a excel tiene varias columnas con campos decimales y en diferentes posiciones, dependiendo del resultado obtenido de c谩lculos matem谩ticos, que determinan la demanda de un producto "x".

solucione el problema insertando una nueva instrucci贸n en la linea 3844 de la clase original del m茅todo ExcelOle() en donde reemplazo el "punto" decimal por la "coma" del formato de salida de la columna utilizando la funci贸n STRTRAN().

3842 If ::aColumns[ nCol ]:cPicture != Nil
3843 uData := Transform( uData, ::aColumns[ nCol ]:cPicture )
3844 uData := Strtran ( uData,".",",") // decimales en excel by Armando Lagunas
3845 EndIf

con este cambio, todo funciona muy bien y el formato de salida es el correcto para las columnas que contengan n煤meros.

gracias a sus comentarios

saludos desde Chile.

SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com

Continue the discussion