tsbrowse 8 y excelole() con numeros decimales

Post Reply
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

tsbrowse 8 y excelole() con numeros decimales

Post by armando.lagunas »

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.
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: tsbrowse 8 y excelole() con numeros decimales

Post by sysctrl2 »

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 "
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: tsbrowse 8 y excelole() con numeros decimales

Post by sysctrl2 »

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 "
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: tsbrowse 8 y excelole() con numeros decimales

Post by armando.lagunas »

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 ), ;
:?: aqui--> IIF( ValType( uData )=="N", Str( uData ) , ; <-- :?:
IIF( ValType( uData )=="L", IIF( uData ,".T." ,".F." ), cValToChar( uData )))

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

pero no se como realizar el cambio correcto...

espero que me ayuden...
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: tsbrowse 8 y excelole() con numeros decimales

Post by mmercado »

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: Select all

   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
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: tsbrowse 8 y excelole() con numeros decimales

Post by armando.lagunas »

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.
Post Reply