Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Sumar Celdas en MSHFlexGrid

Estas en el tema de Sumar Celdas en MSHFlexGrid en el foro de Visual Basic clásico en Foros del Web. Hola que tal, una pregunta alguien de ustedes sabe como sumar las celdas de un mshflexgrid, necesito hacer lo siguiente ya he probado de varias ...
  #1 (permalink)  
Antiguo 07/07/2008, 14:12
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 6
Sumar Celdas en MSHFlexGrid

Hola que tal, una pregunta alguien de ustedes sabe como sumar las celdas de un mshflexgrid, necesito hacer lo siguiente ya he probado de varias formas y ya me encuentro mareado. tengo este codigo

Código:
Fila = 1
                        While rs.EOF = False
                            .MSHFlexGrid1.TextMatrix(Fila, 2) = Format(rs.Fields("EntradaFecha"), "dd-MMM-yyyy")
                            .MSHFlexGrid1.TextMatrix(Fila, 10) = Format(rs.Fields("EntradaCUnitario"), "$ #,##0.00")
                            .MSHFlexGrid1.TextMatrix(Fila, 20) = Format(rs.Fields("EntradaCantidad") * rs.Fields("EntradaCUnitario"), "$ #,##0.00")
                            .MSHFlexGrid1.TextMatrix(Fila, 21) = Format(rs.Fields("Salida") * rs.Fields("EntradaCUnitario"), "$ #,##0.00")
                                
                                For i = 1 To .MSHFlexGrid1.Rows - 1
                                    .MSHFlexGrid1.TextMatrix(Fila, 6) = (CDbl(.MSHFlexGrid1.TextMatrix(Fila, 4)) + CDbl(.MSHFlexGrid1.TextMatrix(i, 6)))
                                    .MSHFlexGrid1.TextMatrix(Fila, 22) = Format((CDbl((.MSHFlexGrid1.TextMatrix(Fila, 22)) + CDbl(.MSHFlexGrid1.TextMatrix(i, 20)))) - (.MSHFlexGrid1.TextMatrix(i, 21)), "$ #,##0.00")
                                Next
                                
                            Fila = Fila + 1
                         rs.MoveNext
                        Wend
                    .Show vbModal
en la segunda sentencia despues de For aplica bien la formula pero en lo demas NO. la idea es generar lo siguiente


que es donde tengo el problema lo demas esta resuelto
Código:
ENTRADA   SALIDA   EXISTENCIA

  25                 0               25
458                 0             483
  12                 0             495
    0                 95           400

La formula es Existencia = (Existencias + Entradas) - Salidas
Pero hasta ahora no me ha podido funcionar, alguna idea o que estoy haciendo mal.
  #2 (permalink)  
Antiguo 07/07/2008, 14:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Sumar Celdas en MSHFlexGrid

He leído y vuelto a leer el código y no entendí lo que quieres hacer al final, ¿por qué estás recorriendo todas las filas cada vez que pasas por el bucle?. Por cierto, ¿podrías decirme cuál es el formato completo de tu Grilla?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 07/07/2008, 14:40
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Sumar Celdas en MSHFlexGrid

Los tres campos que pongo que son Entrada, Salida y Existencia son numericos en la base de datos. a la hora de mostrar la grilla me coloca los registros de Entrada y Salida, y en Existencia deve de haber la diferencias de Estas de acuerdo a la formula que Coloque mi problema que tengo es solo en esta linea de codigo

Código:
For i = 1 To .MSHFlexGrid1.Rows - 1
 .MSHFlexGrid1.TextMatrix(Fila, 6) = (CDbl(.MSHFlexGrid1.TextMatrix(Fila, 4)) + CDbl(.MSHFlexGrid1.TextMatrix(i, 6)))
Next
ya que los registros me los suma pero no como yo los quiero no se donde tenga que cambiar el codigo porque ya estoy un poco mareado y el cerebro creo que por ahora no me da para mas...
  #4 (permalink)  
Antiguo 07/07/2008, 14:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Sumar Celdas en MSHFlexGrid

Bueno, a estas horas de la tarde, yo tampoco tengo mucha facilidad de analizar códigos, así que, ¿podrías pasarme una captura de pantalla de cómo está el Grid actualmente?, ¿cuál es la operación que quieres realizar? y ¿qué es lo que está haciendo mal?

P.S.: tienes muchos paréntesis redundantes en tu código...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 07/07/2008, 14:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Sumar Celdas en MSHFlexGrid

Según lo que entendí, en tu código lo que está mal es que estás volviendo a recorrer desde la primera fila. Lo cual es absolutamente innecesario ya que en la fila anterior ya tienes el resultado de la suma y resta de las filas anteriores, así que simplemente toma ese valor y trabaja con ella.

Saludos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 07/07/2008, 14:58
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Sumar Celdas en MSHFlexGrid

bien, creo que mañana te paso mis capturas, ya que para mi ya es un poco tarde...
  #7 (permalink)  
Antiguo 07/07/2008, 15:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Sumar Celdas en MSHFlexGrid

Cita:
Iniciado por SalomonSab Ver Mensaje
bien, creo que mañana te paso mis capturas, ya que para mi ya es un poco tarde...
No hay problema, mañana damos con la solución, ya que por hoy .

Saludos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 08/07/2008, 07:21
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Sumar Celdas en MSHFlexGrid

Esta es la captura:

[IMG]
http://s2.subirimagenes.com/otros/pr...ex-almacen.jpg
[/IMG]

La Formula seria:

Código:
Existencia = (Existencia  + Entrada)-Salida
Esta misma formula funciona para el Saldo que la formula es:

Código:
Saldo = (Saldo + Debe)-Haber
pero lo curioso que aqui si se aplica la formula y en la anterior NO
donde esta el ERROR?
  #9 (permalink)  
Antiguo 08/07/2008, 10:01
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Sumar Celdas en MSHFlexGrid

Hola:
prueba poniéndolo así:

Existencia = Existencia(de la fila anterior) + Entrada(de la fila actual) - Salida(de la fila actual)

Es decir: fila-1, fila, fila

  #10 (permalink)  
Antiguo 08/07/2008, 11:03
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Sumar Celdas en MSHFlexGrid

me queda asi:
Código:
Fila = 1
    While rs.EOF = False
           For i = 1 To .MSHFlexGrid1.Rows - 1
               .MSHFlexGrid1.TextMatrix(Fila, 6) = (CDbl(.MSHFlexGrid1.TextMatrix(Fila, 4)) + CDbl(.MSHFlexGrid1.TextMatrix(Fila - 1, 6))) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 5))
           Next
        Fila = Fila + 1
        rs.MoveNext
   Wend
Pero sigue sin mostrame lo que necesito este es el Resultado

http://s2.subirimagenes.com/otros/pr...-almacen-i.jpg

en Existencias deveria quedarme asi:
Código:
 25
483
495
400
  #11 (permalink)  
Antiguo 08/07/2008, 12:05
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Sumar Celdas en MSHFlexGrid

Por lo que yo veo en la imagen, la columna "Existencia" es la nº 4, y no sé de dónde sale el 100 en la primera fila.

Si "Existencia" no es un campo de la tabla y lo vas calculando en función de las entradas y salidas, el código debería funcionar así:

Fecha = Col. 0
Factura = Col. 1
Entrada = Col. 2
Salida = Col 3
Existencia = Col. 4

Código:
    Fila = 1
    .MSHFlexGrid1.TextMatrix(Fila, 4) = CDbl(.MSHFlexGrid1.TextMatrix(Fila, 2)) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 3))
    ' Entrada - Salida (se supone que anteriormente la existencia es cero)
    While rs.EOF = False
           For i = 1 To .MSHFlexGrid1.Rows - 1
                ' Entrada + Existencia anterior - Salida
               .MSHFlexGrid1.TextMatrix(Fila, 4) = CDbl(.MSHFlexGrid1.TextMatrix(Fila, 2)) + CDbl(.MSHFlexGrid1.TextMatrix(Fila - 1, 4)) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 3))
           Next
        Fila = Fila + 1
        rs.MoveNext
   Wend


Corrijo: Si "Existencia" no es un campo de la tabla, sobra el While... Wend, y si lo és, pues también ya que no estamos en ninguna parte haciendo referencia a ningún campo del recordset.

Última edición por Avellaneda; 08/07/2008 a las 12:16
  #12 (permalink)  
Antiguo 08/07/2008, 12:22
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Sumar Celdas en MSHFlexGrid

Me da un ERROr: No coinciden los Tipos en esta linea

Código:
.MSHFlexGrid1.TextMatrix(Fila, 4) = CDbl(.MSHFlexGrid1.TextMatrix(Fila, 2)) + CDbl(.MSHFlexGrid1.TextMatrix(Fila - 1, 4)) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 3))
pero si le quito el -1 si funciona pero sin arrojar los datos correctos
  #13 (permalink)  
Antiguo 08/07/2008, 13:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Sumar Celdas en MSHFlexGrid

Prueba a usar Val en vez de CDbl... (Supongo que ese error se deba a que la primera vez estás tratando de obtener el valor del encabezado como número)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 08/07/2008, 14:06
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Sumar Celdas en MSHFlexGrid

Excelenticisisisisisisisisisisisisisisisisisisisis isisimo, por fin me funciona mil gracias a Avellaneda y a David el Grande por su valioso apoyo. no saben que contento estoy porque eso me traia vuelto loco.
el Error estaba en esta linea

Código:
.MSHFlexGrid1.TextMatrix(Fila, 4) = CDbl(.MSHFlexGrid1.TextMatrix(Fila, 2)) + CDbl(.MSHFlexGrid1.TextMatrix(Fila - 1, 4)) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 3))
y lo cambie por esta otra
Código:
.MSHFlexGrid1.TextMatrix(Fila, 4) = CDbl(.MSHFlexGrid1.TextMatrix(Fila, 2)) + val(.MSHFlexGrid1.TextMatrix(Fila - 1, 4)) - CDbl(.MSHFlexGrid1.TextMatrix(Fila, 3))
UNA VEZ MAS MIL GRACIAS
  #15 (permalink)  
Antiguo 08/07/2008, 14:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Sumar Celdas en MSHFlexGrid

De nada, cualquier pregunta, estamos por aquí.
Nos vemos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:14.