Visual Basic - Denis u otro guru del flexgrid que me ayude

Life is soft - evento anual de software empresarial
   
Vista:

Denis u otro guru del flexgrid que me ayude

Publicado por Omar (56 intervenciones) el 18/12/2008 23:37:19
Que tal foro, pues ya casi queda listo mi proyecto, solo falta una cosita:
En el flex tengo una columna con un total, quiero ver si cada vez que cambie el status de la fila me sume este valor a una variable y vaciarlo en un text. Les muestro lo que llevo:
****************************************
Private Sub Check1_Load()
Check1.Visible = False
Check1.Value = False
Check1.Caption = "PAGADA ?"
Check1.Width = MSFlexGrid.CellWidth
End Sub
****************************************
Private Sub Form_Load()
CaptMovimientos.Height = 8800
CaptMovimientos.Width = 12525
Dim TOPCORNER As Integer
Dim LEFTCORNER As Integer
If CaptMovimientos.WindowState <> 0 Then Exit Sub
TOPCORNER = (Screen.Height - CaptMovimientos.Height) 3
LEFTCORNER = (Screen.Width - CaptMovimientos.Width) 2
CaptMovimientos.Move LEFTCORNER, TOPCORNER
Check1_Load
End Sub
*****************************************
Private Sub MsFlexGrid_Click()
If OpIngreso.Value = True Then
If Check1.Visible = True Then
Check1.Visible = False
MSFlexGrid.CellBackColor = &H80000005
End If
If MSFlexGrid.Col = 7 Then ' Posicion y tamaño a CheckBox, luego lo muestra.
Check1.Width = MSFlexGrid.CellWidth
Check1.Left = MSFlexGrid.CellLeft + MSFlexGrid.Left
Check1.Top = MSFlexGrid.CellTop + MSFlexGrid.Top
If MSFlexGrid.Text = "PAGADA" Then
Check1.Value = 1
Else
If MSFlexGrid.Text = "" Then
Check1.Value = 0
End If
End If
Check1.Visible = True
End If
Else
If Check1.Visible = True Then
Check1.Visible = False
MSFlexGrid.CellBackColor = &H80000005
End If
If MSFlexGrid.Col = 5 Then ' Posicion y tamaño a CheckBox, luego lo muestra.
Check1.Width = MSFlexGrid.CellWidth
Check1.Left = MSFlexGrid.CellLeft + MSFlexGrid.Left
Check1.Top = MSFlexGrid.CellTop + MSFlexGrid.Top
If MSFlexGrid.Text = "PAGADA" Then
Check1.Value = 1
Else
If MSFlexGrid.Text = "" Then
Check1.Value = 0
End If
End If
Check1.Visible = True
End If
End If
End Sub
**************************************
Private Sub Check1_Click()
If OpIngreso.Value = True Then
If MsFlexGrid.Col = 7 Then
If Check1.Value = 1 Then
MsFlexGrid.Text = "PAGADA"
I = 0
For I = 1 To MsFlexGrid.Rows - 1
MontoCheque = Val(TxtTotal.Text) + Val(MsFlexGrid.TextMatrix(I, 5))
TxtTotal.Text = MontoCheque
Next I
Else
If Check1.Value = 0 Then
MsFlexGrid.Text = "PENDIENTE COBRO"
I = 0
For I = 1 To MsFlexGrid.Rows - 1
MontoCheque = Val(TxtTotal.Text) - Val(MsFlexGrid.TextMatrix(I, 5))
TxtTotal.Text = MontoCheque
Next I
End If
End If
Check1.Visible = False
End If
End If

En todas las columnas que le doy click me pone un valor en el text de 234.05 que no se de donde lo saca.

Alguna idea ???

De antemano, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Denis u otro guru del flexgrid que me ayude

Publicado por Luis Alan (2 intervenciones) el 30/12/2008 21:00:16
No crees que es algo tedioso programar asi, me tomaré la molestia de llevar tu fuente para revisarla, soy bueno en esto te traere resultados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Denis u otro guru del flexgrid que me ayude

Publicado por P3L30N (701 intervenciones) el 31/12/2008 13:19:19
Eres bueno en esto??

Si ni siquiera sabes enlazar un control MSFlexGrid a un recordset

léase:
http://www.lawebdelprogramador.com/news/mostrar_new.php?id=96&texto=Visual+Basic+Avanzado&n1=520061&n2=1&n3=1&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

NECESITAS UN POCO MAS DE HUMILDAD Y NO VALORARTE A TI MISMO, DEJA QUE LO HAGAN LOS DEMAS.

Esperamos impacientemente tus resultados, a ver que nos traes!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hay alguna otra forma ?

Publicado por Omar (56 intervenciones) el 31/12/2008 17:05:09
Hasta donde necesito vaciar el resultado me da exelentes resultados, pero no todo puede ser perfecto.

Espero noticias.

De antemano, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hay alguna otra forma ?

Publicado por P3L30N2009 (701 intervenciones) el 01/01/2009 13:22:17
En vista de que que "soy bueno en esto" no te trae los resultados prometidos, te contesto yo.

El valor que te arroja de 234.05 es la suma de los valores de la columna 5 (compruébalo) y pinches donde pinches, siempre va a arrojar el mismo resultado.

Es eso lo que quieres? sumar la columna 5 o sumar los valores de la fila donde se pinchó?

Feliz 2009
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumar los de la columna 5, pero...

Publicado por Omar (56 intervenciones) el 02/01/2009 17:08:02
Lo que pasa es que ese valor no lo tengo en ninguna celda, por ejemplo, si en la fila 1 col 5 tengo 11,750.00 me suma 234.05, fila2 col 2 tengo 768.00 me vuelvea sumar 234.05.

Eso es lo que no se porque lo hace.

Mil gracias por contestar.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sumar los de la columna 5, pero...

Publicado por P3L30N2009 (701 intervenciones) el 02/01/2009 18:49:31
Bueno, lo vamos a dejar porque esto ni es Visual Basic 'Avanzado' ni parece que lo quieras entender.

For I = 1 To MsFlexGrid.Rows - 1
MontoCheque = Val(TxtTotal.Text) + Val(MsFlexGrid.TextMatrix(I, 5))
TxtTotal.Text = MontoCheque
Next I

Ahí lo que estás haciendo (quieras o no), es sumar los valores de la columna 5. Los parámetros de TextMatrix son Row, Col. (En el bucle la fila se va incrementando de uno en uno y la columna se mantiene siempre en la 5).

Si en la fila 1 col 5 tienes 11,750.00 (suponemos que el valor está bien formateado) es imposible que MontoCheque dé 234.05 y lo que tengas en la fila 2 col 2 no influye para nada, ya que estás sumando la columna 5 y no la 2.

Nota aclaratoria: En una matriz. Fila = línea recta horizontal desde la primera celda de la izquierda hasta la última de la derecha. Columna = línea recta vertical desde la primera celda superior hasta la última o inferior.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sumar los de la columna 5, pero...

Publicado por Omar (56 intervenciones) el 02/01/2009 19:03:28
Ni hablar, otra manera habra.

Me atrevi a publicar en visual basic avanzado porque tampoco me supieron responder en el foro de visual basic 'Normal'

Gracias por tu tiempo y por la nota aclaratoria.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Denis u otro guru del flexgrid que me ayude

Publicado por Denis (24 intervenciones) el 07/01/2009 16:07:41
Hola Omar

Feliz Año Nuevo

Perdona pero estaba de vacaciones jejejeje y me desconecté por completo, quería saber si ya solucionaste tu problema, porque estuve leyendo y creo tener la solución.

Avisame, salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Denis u otro guru del flexgrid que me ayude

Publicado por Denis (24 intervenciones) el 07/01/2009 16:39:29
Hola Omar

Perdona pero estaba de vacaciones, creo tener la solución a tu problema

Creo que lo que quieres es sumar todos aquellos elementos que cumplan con la condición "PAGADO" asii que te recomendaría hacer lo siguiente en tu código

Private Sub Check1_Click()
If OpIngreso.Value = True Then
If MsFlexGrid.Col = 7 Then
If Check1.Value = 1 Then
MsFlexGrid.Text = "PAGADA"
I = 0
For I = 1 To MsFlexGrid.Rows - 1
MontoCheque = Val(MontoCheque) + Val(MsFlexGrid.TextMatrix(I, 5))
TxtTotal.Text = MontoCheque
Next I
Else
If Check1.Value = 0 Then
MsFlexGrid.Text = "PENDIENTE COBRO"
I = 0
For I = 1 To MsFlexGrid.Rows - 1
MontoCheque = Val(MontoCheque) - Val(MsFlexGrid.TextMatrix(I, 5))
TxtTotal.Text = MontoCheque
Next I
End If
End If
Check1.Visible = False
End If
End If

Como puedes ver cambié unicamente la linea MontoCheque, además debes declarar esta variable fuera de cualquier procedimiento es decir en General (Declaraciones)

Otra cosa te recuerdo que el Val no funciona con formato español, es decir las comas no las toma en cuenta y calcula resultados únicamente enteros, recuerda tener bien formateada la data.

Saludos y disculpa pero estaba de Vacaciones, Feliz 2009.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Denis u otro guru del flexgrid que me ayude

Publicado por P3L30N2009 (701 intervenciones) el 08/01/2009 18:39:50
Si es eso lo que quería el que preguntó, ademas de "guru" eres adivino.

Por mas que se le ha preguntado lo que quiere no ha sabido (querido) responder.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Denis u otro guru del flexgrid que me ayude

Publicado por Denis (24 intervenciones) el 09/01/2009 09:07:10
Jejejejeje

Peleon no sé si eso sea lo que Omar pregunta, pero leyendo y viendo el código creo que sí lo es.

No soy "guru" pero si puede ser que sea ADIVINA

Salu2 :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Denis u otro guru del flexgrid que me ayude

Publicado por Omar (56 intervenciones) el 09/01/2009 22:03:37
Primeramente... Feliz Año Denis !!!

Lo mejor para este nuevo para ti y los tuyos.

Tienes razon, el problema me lo dio en el "Val", hice las correciones y todo funcionando bien.

Gracias nuevamente.

Para Peleon no me tarde porque estuviera reformulando mi duda, cuando preguntaste que si era lo que queria te conteste, simplemente me avoque a otras cosas ya que aqui en esta duda presisamente me habia atorado.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar