Page 1 of 1

TOTALIZAR UNA TABLA

Posted: Fri Mar 27, 2015 3:36 pm
by LuisPonce
Hola Amigos

Necesito totalizar una tabla ya ordenada por un campo fecha que tiene el nombre "DIA", el tema es que la cantidad de campos numericos que deseo totalizar es variable, pueden ser varias columnas llamadas "CANTIDAD_X" ejemplo: FIELDS CANTIDAD_A, CANTIDAD_B, CANTIDAD_C, CANTIDAD_D........, entonces esto lo defino con una Array aCampos:={"CANTIDAD_A","CANTIDAD_B", "CANTIDAD_C", "CANTIDAD_D"} de la siguiente forma NO funciona:

TOTAL TO &cFile ON DIA FIELDS aCampos
TOTAL TO &cFile ON DIA FIELDS &aCampos
TOTAL TO &cFile ON DIA FIELDS &aCampos.

Unicamente funciona asi:

TOTAL TO &cFile ON DIA FIELDS CANTIDAD_A,CANTIDAD_B, CANTIDAD_C, CANTIDAD_D

Me da el resultado que espero, la suma de CANTIDAD_X por DIA, una linea por dia.

dia 1: 25 10 10 3
dia 2: 10 10 15 3
dia 3: 40 20 15 3
dia 4: 25 10 20 3

Pero como la cantidad de campos es variable, cuando no existe uno de los "CANTIDAD_X" me da error

entonces encontre lo siguiente:

__dbtotal(cFile,"DIA",aCampos )

probe tambien

__dbtotal(cFile,DIA,aCampos )
__dbtotal(cFile,"DIA",aCampos )
__dbtotal(cFile,"FIELDNAME->DIA",aCampos )
__dbtotal(cFile,FIELDNAME->DIA,aCampos )

cKey:="DIA"

__dbtotal(cFile,cKey,aCampos )
__dbtotal(cFile,&cKey,aCampos )
__dbtotal(cFile,&cKey.,aCampos )

y me da un resultado inesperado, las columnas de aCampos totalizadas pero todo agrupado en el primer DIA, una sola linea

dia 1: 100 50 60 12

Mi pregunta es:

Como puedo darle parametros al comando SET TOTAL o cual es la sintaxis correcta de __DbTotal()

Gracias

Re: TOTALIZAR UNA TABLA

Posted: Fri Mar 27, 2015 6:22 pm
by karinha

Re: TOTALIZAR UNA TABLA

Posted: Sat Mar 28, 2015 12:27 pm
by xmanuel
Luis puedes publicar la estructura de la dbf donde guardas la información?

Re: TOTALIZAR UNA TABLA

Posted: Sun Mar 29, 2015 3:47 am
by LuisPonce
Gracias Karinha, Gracias Manuel

En realidad es una estructura variable, la base es esta:

CARGO,Carácter,2
TIKET,Carácter,11
DIA,Fecha,8
CANTIDAD,Númerico,12,4
IMPORTE,Númerico,12,2
BSEIMP,Númerico,12,2
IGV,Númerico,12,2
TURNO,Carácter,1

a esta estructura, antes de ser creada la tabla, agrego _

CANTIDAD_A,Númerico,12,4
CANTIDAD_B,Númerico,12,4
CANTIDAD_C,Númerico,12,4
OTROS,Númerico,12,4

dependiendo del tipo de producto vendido

es por eso que _ a totalizar puede ser uno o varios (CANTIDAD_A,CANTIDAD_B....)

con el comando TOTAL ON ..... no puedo hacerlo, pero al parecer con el __DbTotal() si es posible, x que puedo pasarle parametros.

Re: TOTALIZAR UNA TABLA

Posted: Mon Mar 30, 2015 3:11 pm
by LuisPonce
Gracias por los los aportes.

Encontré la solución y la comparto:

__dbtotal(cFile,ArchivoOrdenado->(FIELDNAME(3)),aCampos )

Tomé el campo "DIA", señalando el área y por su posición en la estructura, y Funciono!!!!

Obtuve el resultado que esperaba.

dia 1: 25 10 10 3
dia 2: 10 10 15 3
dia 3: 40 20 15 3
dia 4: 25 10 20 3

TOTAL: 100 50 60 12