como añadir una fila de totales al final de un grid

1,645 views
Skip to first unread message

Hitiel Hernández

unread,
Jul 19, 2012, 9:14:05 AM7/19/12
to publice...@googlegroups.com
buen día compañeros, tengo un pequeño inconveniente, resulta que tengo un grid con las siguientes columnas:

CODIGO ------PRODUCTO-----ENTRADAS------SALIDAS------SALDO

Necesito hacer que al final del Grid me de los totales para las tres ultimas columnas; como hacer para que esto funcione?

gracias desde ya por su aporte!

--
Sabiduría ante todo; adquiere sabiduría

Luis Maria Guayan

unread,
Jul 19, 2012, 9:54:36 AM7/19/12
to publice...@googlegroups.com
Puedes totalizar las columnas en tres variables (con el comando SUM) o totalizar las tres columnas en un cursor (con una sentencia SELECT SUM(entradas), ...) y de allí mostrarlos en TextBoxes o una pequeña grilla de un registro en la parte inferior

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 
 

Miguel Canchas

unread,
Jul 19, 2012, 9:59:12 AM7/19/12
to publice...@googlegroups.com

Puedes poner el resultado directamente en la columna… thisfom.grid1.colum4.text.value = entradas – salidas

 

MK

--
 
 
 

Mik

unread,
Jul 19, 2012, 11:01:01 AM7/19/12
to publice...@googlegroups.com
Hola

Algunas veces he utilizado lo siguiente:

Si el cursor que muestras en la grilla es READWRITE puedes insertarle un ultimo registro con APPEND BLANK. El campo Producto lo reemplazas con el string "TOTAL" y los otros campos con los totales obtenidos con el comando SUM como te sugirio el señor Luis Maria. Luego puedes mostrar de otro color el ultimo registro de la grilla con lo siguiente:

Thisform.Grid1.SetAll("DynamicBackColor", "IIF(MiCursor.Producto="TOTAL", RGB(255,255,255) ;
   , RGB(0,255,0))", "Column") 

Espero te sirva.

Saludos

Miguel Herbias
Lima Peru

Hitiel Hernández

unread,
Jul 19, 2012, 11:44:53 AM7/19/12
to publice...@googlegroups.com
gracias compañeros, lo pondré en práctica y les aviso cómo me fue

--
 
 
 

Rudolf Johann Heiner

unread,
Jul 19, 2012, 3:49:47 PM7/19/12
to publice...@googlegroups.com
saludos amigos foxeros,
disculpen la molestia,
como hago para pintar una serie de filas de un grid,
osea intercalado una si una no,
gracias,
rudolf heiner.

MILTON CACHIPUENDO

unread,
Jul 19, 2012, 3:51:04 PM7/19/12
to Google Groups
Puedes utilizar la clase GridFooter.vcx (libre) que te ayuda de una manera facil a resolver este problema, es un objeto grid que se inserta en la ventana donde esta el grid, se configura que columnas se van a totalizar y listo, te da una apariencia profesional, ahí te envío la clase (renombrele el archivo a .ZIP)

Att.


ING. MILTON CACHIPUENDO
ServySistem Online
Ibarra - Ecuador
gridfooter._zip

Samuel San Miguel Hernández

unread,
Jul 19, 2012, 3:58:18 PM7/19/12
to publice...@googlegroups.com
Hola Miltiño,, co abre tu clase... puedes enviar un ejemplo completo.

Gracias.

Miltiño

unread,
Jul 19, 2012, 4:02:57 PM7/19/12
to publice...@googlegroups.com
Tienes que renombrar el archivo adjunto gridfooter._zip a gridfooter.zip, lo descomprimes en un directorio, ahí hay un ejemplo, necesitas VFP 9.0

Walter R. Ojeda Valiente

unread,
Jul 19, 2012, 4:16:15 PM7/19/12
to publice...@googlegroups.com
1. Agrega tres textbox deshabilitados debajo de cada columna. Por ejemplo:
      - TotalEntradas
      - TotalSalidas
      - TotalSaldo

2. Agrega un método a tu formulario. Por ejemplo:
      - MostrarTotales

3. En el método MostrarTotales escribe:
      Local lnTotEntradas, lnTotSalidas, lnTotalSaldos
      SUM ENTRADAS, SALIDAS, SALDO TO lnTotalEntradas, lnTotalSalidas, lnTotalSaldo
      WITH ThisForm
          .TotalEntradas.Value = lnTotalEntradas
          .TotalSalidas.Value = lnTotalSalidas
          .TotalSaldo.Value = lnTotalSaldo
      ENDWITH

          Donde ENTRADAS, SALIDAS, SALDO son los nombres de tus campos

4. Cuando quieras ver los totales de esa columan simplemente invocas al método MostrarTotales(), por ejemplo:
      - ThisForm.MostrarTotales()

Saludos.

Walter.




Date: Thu, 19 Jul 2012 07:14:05 -0600

Subject: [vfp] como añadir una fila de totales al final de un grid
From: hiti...@gmail.com
To: publice...@googlegroups.com
--
 
 
 

Jose Oscar Vogel

unread,
Jul 19, 2012, 4:21:13 PM7/19/12
to publice...@googlegroups.com
buenas tardes
frmMyForm.grdGrid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255), RGB(0,255,0))", "Column")  && Alternate white and green records

saludos oscar

--
 
 
 



--
Prof. Jose Oscar Vogel
Garuhapé - Misiones
CP 3334
Cel: 03743-15667526
MSN: oscar...@gmail.com
Twitter: @ovogel23
Facebook: oscarvogel

Armando Rodríguez Bermúdez

unread,
Jul 19, 2012, 4:31:30 PM7/19/12
to publice...@googlegroups.com

Walter, me ha pasado que cuando utilizo SUM nativo de Fox, me lleva el apuntador de registros hasta el último registro. Y cuando obtiene el foco la grilla se coloca al final.  En su lugar hago selects sum(nombre_campo ) as campo, y luego asigno el resultado al value de los textboxes.

 

Saludos

Armando

--
 
 
 

Luis Maria Guayan

unread,
Jul 19, 2012, 4:30:00 PM7/19/12
to publice...@googlegroups.com


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 
 

Nilton CPM

unread,
Jul 19, 2012, 4:39:46 PM7/19/12
to publice...@googlegroups.com
1> Guarda o numero do ponteiro.
2> Executa o SUM.
3> Restaura o numero do ponteiro.
 
------------
select notas
nRecno = iif(!eof() and !bof(), recno(), 0)
...
sum ...
...
if nRecno <> 0
    go nRecno
endif
------------
--
 
 
 

Walter R. Ojeda Valiente

unread,
Jul 19, 2012, 4:45:29 PM7/19/12
to publice...@googlegroups.com
Hola Armando

Es cierto, el comando SUM mueve el puntero al final del archivo, pero lo solucionas fácil:
  lnNumReg = RecNo()
  && Aquí todas las otras instrucciones
  go lnNumReg

Saludos.

Walter.





From: armandor...@hotmail.com
To: publice...@googlegroups.com
Subject: RE: [vfp] como añadir una fila de totales al final de un grid
Date: Thu, 19 Jul 2012 15:31:30 -0500
--
 
 
 

Armando Rodríguez Bermúdez

unread,
Jul 19, 2012, 4:46:37 PM7/19/12
to publice...@googlegroups.com

Muito obrigado

 

Armando

--
 
 
 

Armando Rodríguez Bermúdez

unread,
Jul 19, 2012, 4:46:49 PM7/19/12
to publice...@googlegroups.com

Gracias

--
 
 
 

Jairo

unread,
Jul 19, 2012, 10:05:54 AM7/19/12
to publice...@googlegroups.com

Hago lo siguiente.

 

DIMENSION laArray[1]

     

SELECT SUM(detalle.monto) FROM detalle;

      WHERE detalle.id == ?Pedidos.id ;

      INTO ARRAY laArray

     

      if !empty(laArray[1])

            thisform.Gframes1.Page1.MONTO1.Value = laArray[1]

            thisform.Gframes1.Page1.Total1.Refresh()

      else

            thisform.Gframes1.Page1.MONTO1.Value = 0

            thisform.Gframes1.Page1.MONTO1.Refresh()

      ENDIF

 

JM

--
 
 
 

Riago

unread,
Jul 19, 2012, 7:48:12 PM7/19/12
to publice...@googlegroups.com
 Cuando se utiliza el RECNO() como referencia de registro, posiblemente tenga problemas para desplegar si tu archivo está indexado, pues la relación de la posición en el indice no será reacional y consecutiva con el RECNO(), por consiguiente si el archivo tiene indices esta opción no será viable, podrá desplegar colores, pero no intercalados en forma correcta.

Un abrazo.

      Saludos 
Ricardo González

 



--
 
 
 

Daniel Sánchez

unread,
Jul 19, 2012, 7:53:19 PM7/19/12
to publice...@googlegroups.com
Maestro Luis María me pareció interesante el link y lo copie el código a un prg y me bloqueo mi Visual FoxPro al ejecutarlo.

Windows 7 32bits y VFP 9 SP2

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Riago

unread,
Jul 19, 2012, 8:39:11 PM7/19/12
to publice...@googlegroups.com
Yo también lo bajé y funciona excelente, solo que las lineas de colores intercaladas las despliega en los rows que están desplegados en pantalla, si utilizo el botón de desplazamiento lateral, ya no tienen colores.
La forma en que lo desarrollo, está muy buena.

      Saludos 
Ricardo González


Daniel Sánchez

unread,
Jul 19, 2012, 10:51:14 PM7/19/12
to publice...@googlegroups.com
Maestro Luis María, haciendo seguimiento al código esta línea es la que me deja colgado 

m.lRiid = 0hE03687613D3CCF11810C00AA00389B71

que esta en esta sección del código

Declare Integer AccessibleObjectFromWindow In oleacc.Dll ;
		Integer nhwnd, ;
		Integer dwObjectID, ;
		String riid, ;
		Object @ppvObject

	m.lHwnd = Thisform.HWnd
	m.ldwObjectID = OBJID_CLIENT
	m.lRiid = 0hE03687613D3CCF11810C00AA00389B71
	m.loxForm = 0

	AccessibleObjectFromWindow(m.lHwnd, m.ldwObjectID , m.lRiid, @m.loxForm)


Lo he colocado en la calculadora de windows y me lo recorta 0hE03687613D3CCF11 y eso que esta en la opción qword que es la mas alta de las otras que son dword, word y byte.

Víctor Hugo Espínola Domínguez

unread,
Jul 19, 2012, 10:59:37 PM7/19/12
to publice...@googlegroups.com
Hola Daniel

En XP funciona Ok. En W7 Home Premium 64 falla pero no cuelga.
Con algunas modificaciones lo convertí a puro Visual FoxPro, adjunto el programa modificado. Si alguien tiene tiempo y ganas lo puede convertir a clase y postearlo al grupo.

Saludos.
Víctor.


--
 
 
 

colorgrid2._rar

Hitiel Hernández

unread,
Jul 19, 2012, 11:05:13 PM7/19/12
to publice...@googlegroups.com
y dónde haces esto Jairo?,, es decir, en qué momento

--
 
 
 

Víctor Hugo Espínola Domínguez

unread,
Jul 20, 2012, 9:16:09 PM7/20/12
to publice...@googlegroups.com
Hola grupo VISUAL FOXPRO

Acá va otra modificación que sirve para tablas que tengan Clave Primaria, en este caso la primera columna.

Saludos.
Víctor.
colorgrid3._prg

ZeRoberto

unread,
Jul 21, 2012, 8:56:18 PM7/21/12
to publice...@googlegroups.com
El codigo de Carlos Alloatti solo funciona en numero x de registros
pero cuando vas bajando con el scrollbar se despintan los registros.

El 20/07/12, Víctor Hugo Espínola Domínguez <vich...@gmail.com> escribió:
> --
>
>
>
>

HernanCano

unread,
Jul 21, 2012, 9:35:18 PM7/21/12
to publice...@googlegroups.com

He ejecutado el código de Carlos Alloatti que nos expone Luis María, y funciona sin problemas.

Lo ejecuté y me desplacé con las flechas arriba y abajo, con página arriba y abajo, y con el scroll, con el mouse; es decir que los renglones se pintan uno sí y el sgte no, de acuerdo a lo que necesitamos, con cualq de los ordenamientos que da el ejemplo

WinXP, VFP9 sin Service Pack ( 09.00.0000.2412 ), Monitor AOC, Resolución 1024x768 .

Chao.

HernanCano

unread,
Jul 21, 2012, 9:41:46 PM7/21/12
to publice...@googlegroups.com
Perdón.

He ejecutado el código de Víctor Hugo, y funciona sin problemas.


Lo ejecuté y me desplacé con las flechas arriba y abajo, con página arriba y abajo, y con el scroll, con el mouse; es decir que los renglones se pintan uno sí y el sgte no, de acuerdo a lo que necesitamos, con cualq de los ordenamientos que da el ejemplo

WinXP, VFP9 sin Service Pack ( 09.00.0000.2412 ), Monitor AOC, Resolución 1024x768 .

Chao.

Por favor discupen el error.

Autorizo al administrador tachar el mensaje anterior (no exactamente suprimir, pero si se considera necesario, ok).

Mario Oviedo

unread,
Aug 15, 2012, 5:01:21 PM8/15/12
to publice...@googlegroups.com
en la cuarta columna y en lostfocus coloca
thisfom.grid1.colum4.text.value = entradas – salidas 
entradas=micursor.entradas
salidas=this.value


--
 
 
 

Reply all
Reply to author
Forward
0 new messages