FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xbrowse con columnas variables
Posts: 14
Joined: Sun Feb 21, 2010 12:38 AM
xbrowse con columnas variables
Posted: Fri Oct 04, 2019 05:16 PM

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

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: xbrowse con columnas variables
Posted: Fri Oct 04, 2019 07:35 PM

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

viewtopic.php?f=6t=37456p=223908#p223906

&&

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 14
Joined: Sun Feb 21, 2010 12:38 AM
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 09:50 PM
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 ...
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 09:54 PM
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 (fw): Select all Collapse
   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
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 14
Joined: Sun Feb 21, 2010 12:38 AM
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 10:20 PM

Estimado cnavarro :

estoy usando fwh 17.09 y no funciono usando la variable intermedia que sugeriste. :cry:

Se agradece tu sugerencia

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 10:30 PM

Qu茅 error te da?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 14
Joined: Sun Feb 21, 2010 12:38 AM
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 10:48 PM

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

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 11:04 PM

El problema seguramente es lo que se denomina "detached" local, busca en el foro y si no ves como solucionarlo, seguimos con ello

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 14
Joined: Sun Feb 21, 2010 12:38 AM
Re: xbrowse con columnas variables
Posted: Mon Oct 07, 2019 11:09 PM

Estimado cnavarro :

Gracias por la atencion ... revisare lo sugerido

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: xbrowse con columnas variables
Posted: Tue Oct 08, 2019 06:44 PM
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 (fw): Select all Collapse
//------------------------------------//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.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion