xbrowse con columnas variables

xbrowse con columnas variables

Postby hpoliz » Fri Oct 04, 2019 5: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
hpoliz
 
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

Postby cnavarro » Fri Oct 04, 2019 7: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=6&t=37456&p=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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: xbrowse con columnas variables

Postby hpoliz » Mon Oct 07, 2019 9: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 ...
hpoliz
 
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

Postby cnavarro » Mon Oct 07, 2019 9: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: Select all  Expand view

   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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: xbrowse con columnas variables

Postby hpoliz » 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
hpoliz
 
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

Postby cnavarro » 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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: xbrowse con columnas variables

Postby hpoliz » 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
hpoliz
 
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

Postby cnavarro » 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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: xbrowse con columnas variables

Postby hpoliz » Mon Oct 07, 2019 11:09 pm

Estimado cnavarro :

Gracias por la atencion ... revisare lo sugerido
hpoliz
 
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

Postby FranciscoA » Tue Oct 08, 2019 6: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: Select all  Expand view
//------------------------------------//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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests