Page 1 of 1
xbrowse con columnas variables
Posted: Fri Oct 04, 2019 5:16 pm
by hpoliz
buenos dias :
he construido un select cuyo resultado puede tener una cantidad variable de columnas ( los nombres de las columnas pueden cambiar segun la empresa que lo use )
ejemplo ... mes, v_alma01, v_alma02, v_alma03, v_alma04, v_alma05
mes, v_hist, v_proy, v_trans
este select contiene las ventas mensuales por cada tienda
Enero, 100, 150, 120
febrer0, 200,150,130
como puedo hacer para construir un xbrowse que me muestre las columnas obtenidas ( que como indique anteriormente son variables )
gracias por la atencion
Re: xbrowse con columnas variables
Posted: Fri Oct 04, 2019 7:35 pm
by cnavarro
Busca en el foro AddCol, es justo lo que necesitas, puedes definir el xbrowse vacio o con algunas columnas y despues ir añadiendo según tus necesidades
http://forums.fivetechsupport.com/viewt ... 08#p223906
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 9:50 pm
by hpoliz
aTdas ... es un arreglo de las tiendas de una empresa ( este arreglo puede ser variable, es decir hoy tiene 3 y luego puede tener 5, 6, o mas )
TEM_T ... es una tabla (producto de un select) donde tiene las valores de las ventas de las tiendas
necesito un browse con las ventas de las tiendas, pero solo obtengo 0,00 en el browse ( las cabeceras si se muestran correctamente )
for i := 1 to len(aTdas)
WITH OBJECT oCol := oBrwT:AddCol()
:bStrData := { || cValToChar( TEM_T->( FieldGet( i ) ) ) }
:cHeader := trim(aTdas[i,1])
END WITH
next i
favor su ayuda ...
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 9:54 pm
by cnavarro
hpoliz wrote:aTdas ... es un arreglo de las tiendas de una empresa ( este arreglo puede ser variable, es decir hoy tiene 3 y luego puede tener 5, 6, o mas )
TEM_T ... es una tabla (producto de un select) donde tiene las valores de las ventas de las tiendas
necesito un browse con las ventas de las tiendas, pero solo obtengo 0,00 en el browse ( las cabeceras si se muestran correctamente )
for i := 1 to len(aTdas)
WITH OBJECT oCol := oBrwT:AddCol()
:bStrData := { || cValToChar( TEM_T->( FieldGet( i ) ) ) }
:cHeader := trim(aTdas[i,1])
END WITH
next i
favor su ayuda ...
Qué versión de Fwh utilizas?
Mira a ver si utilizando una variable intermedia te funciona
Code: Select all
for i := 1 to len(aTdas)
WITH OBJECT oCol := oBrwT:AddCol()
cDato := cValToChar( TEM_T->( FieldGet( i ) ) )
:bStrData := { || cDato }
:cHeader := trim(aTdas[i,1])
END WITH
next i
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 10:20 pm
by hpoliz
Estimado cnavarro :
estoy usando fwh 17.09 y no funciono usando la variable intermedia que sugeriste.
Se agradece tu sugerencia
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 10:30 pm
by cnavarro
Qué error te da?
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 10:48 pm
by hpoliz
Estimado cnavarro :
disculpa si me exprese mal ..
No hay error en la sentencia ... me referia a que no visualizo los datos ... solo veo 0,00
Colocando de esta forma si se visualizan los valores, pero como no se cuantas columnas tendra la tabla necesito que el browse sea variable
ADD COLUMN TO XBROWSE oBrwT ;
DATA TEM_T->V_ALMA01 ;
HEAD "ALMA01" SIZE 80
ADD COLUMN TO XBROWSE oBrwT ;
DATA TEM_T->V_ALMA02 ;
HEAD "ALMA02" SIZE 80
ADD COLUMN TO XBROWSE oBrwT ;
DATA TEM_T->V_ALMA03 ;
HEAD "ALMA03" SIZE 80
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 11:04 pm
by cnavarro
El problema seguramente es lo que se denomina "detached" local, busca en el foro y si no ves como solucionarlo, seguimos con ello
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 11:09 pm
by hpoliz
Estimado cnavarro :
Gracias por la atencion ... revisare lo sugerido
Re: xbrowse con columnas variables
Posted: Tue Oct 08, 2019 6:44 pm
by FranciscoA
hpoliz (no se tu nombre)
Hago algo muy, pero muy parecido a lo que expones, solo que con dbfs.
Intenta adaptar el siguiente codigo, en el que claramente se ve que la tabla InfoVtas sería como el resultado de tu consulta Sql.
Code: Select all
//------------------------------------//FranciscoA
Function Ventas()
//Ej. Todos los PtosVta: "BAR","RES","RCH","COM","PIS"
local aPtoVtas:={"BAR","RCH"} //Ptos/Vta que deseamos informar
local aVentas, aStruct:= {}, cCampo, n, cPto, dFecha, nVtas:=0
DBUsearea(.t.,,"Ventas","Ventas",.t.)
INDEX ON FIELD->PUNTOVTA + DTOS(field->FECHA) TO PF TEMPORARY
aadd( aStruct, {"FECHA", "D", 8,0 } )
For n := 1 to len(aPtoVtas)
aadd( aStruct, { aPtoVtas[n], "N", 10,2 } )
Next
DbCreate( ".\infovtas", aStruct )
DBUsearea(.t.,,".\InfoVtas","InfoVtas",.f.)
DbSelectArea("Ventas")
dbgotop()
For n := 1 to len(aPtoVtas)
if Ventas->( DbSeek( cPto := aPtoVtas[n] ) )
While alltrim(field->PuntoVta) == cPto
dFecha := field->Fecha
nVtas := 0
While field->fecha = dFecha
nVtas += Field->ValorFact
dbSkip()
Enddo
InfoVtas->(dbAppend())
InfoVtas->Fecha := dFecha
InfoVtas->&cPto := nVtas
SysRefresh()
Enddo
endif
next
Ventas->(DbCloseArea())
BrwVentas("INFOVTAS",aPtoVtas)
INFOVTAS->(DBCLOSEAREA())
FERASE(".\INFOVTAS.DBF")
Return nil
//------------------------------------//
Function BrwVentas(cTblName,aHeaders)
local oDlg, oBrw
DEFINE DIALOG oDlg SIZE 600,400 PIXEL TITLE "Ventas por Tienda"
@ 2, 0 XBROWSE oBrw OF oDlg PIXEL SIZE 280,140 ;
DATASOURCE cTblName ;
HEADERS aHeaders ;
FOOTERS CELL LINES
WITH OBJECT oBrw
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
END
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( oBrw:Move(40,20) )
RETURN NIL
Saludos.