xbrowse con columnas variables

Post Reply
hpoliz
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

xbrowse con columnas variables

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

Re: xbrowse con columnas variables

Post 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
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
hpoliz
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

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

Re: xbrowse con columnas variables

Post 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
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
hpoliz
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

Post by hpoliz »

Estimado cnavarro :

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

Se agradece tu sugerencia
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: xbrowse con columnas variables

Post by cnavarro »

Qué error te da?
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
hpoliz
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

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

Re: xbrowse con columnas variables

Post 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
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
hpoliz
Posts: 12
Joined: Sun Feb 21, 2010 12:38 am

Re: xbrowse con columnas variables

Post by hpoliz »

Estimado cnavarro :

Gracias por la atencion ... revisare lo sugerido
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: xbrowse con columnas variables

Post 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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
Post Reply