Visual Basic - VALIDAR NUMEROS EN MSFLEXGRID

Life is soft - evento anual de software empresarial
 
Vista:

VALIDAR NUMEROS EN MSFLEXGRID

Publicado por CATITA ZARATE (1 intervención) el 17/01/2006 23:00:42
Hola a todos quisiera que me ayuden en este problema: que el numero que ingreso en la celda de la columna 6 sea menor que el de la columna 5 ; lo he hecho de la siguiente manera
If IsNumeric(.TextMatrix(.Row, 6)) < IsNumeric(.TextMatrix(.Row, 5)) Then
O de esta otra manera;
If .TextMatrix(.Row, 6) < .TextMatrix(.Row, 5) Then
Pero no me resulta.
por si acaso le mando todo el codigo completo donde me funciona perfectamente bien ,
como les explico ahí abajo o sea, se pone de color rojo al ingresar solamente numeros
pero no como yo quiero (que ingrese solamente si es menor que el de la columna 5)
Private Sub MSFlexGrid1_keypress(keyascii As Integer)
‘digitar datos en celda de msflexgrid
If keyascii >= 32 And keyascii <= 127 And MSFlexGrid1.Col = 6 Then
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(keyascii)
End If
Select Case keyascii
‘Activa la tecla enter
Case vbKeyReturn, vbKeyTab
With MSFlexGrid1
'mueve para la proxima celda(al hacer enter se abre o se muestra la columna 6 ) .
If ((.Col + 6 < .cols - 1) Or .Col = 5) Then
.ColWidth(6) = 960
.Col = .Col + 1
ElseIf .Col = 6 Then
For Z = 1 To .Rows - 1
.Row = Z
‘si el dato ingresado es numero (al hacer enter se pinta de color rojo el numero y verde toda la fila completa )
If IsNumeric(.TextMatrix(.Row, 6)) Then ‘aqui es donde hay que corregir el codigo
.CellForeColor = vbRed
For A = 1 To .cols - 1
.Col = A
.CellBackColor = RGB(100, 184, 150)
.Col = 6
Next A
End If
Next Z
End If
End With
End Select
End Sub

'Permite borrar
Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
'manipular las teclas Supr (Del) y Retroceso (BackSpace)
If MSFlexGrid1.Col = 6 Then
Select Case KeyCode
Case vbKeyDelete
MSFlexGrid1.Text = ""
Case vbKeyBack
If Len(MSFlexGrid1.Text) > 0 Then
MSFlexGrid1.Text = Left(MSFlexGrid1.Text, Len(MSFlexGrid1.Text) - 1)
End If
End Select
End If
End Sub
'claro esta que despues tienes que actualizar la base de datos,
'en función de lo que haya modificado el usuario.

NOTA: para RAMON
for z es para que recorra fila por fila, y la solucion que tu me das no hace nada
de lo que pido la idea es que al hacer enter en la columna 5 se active la columna 6 y luego al ingresar un numero en la columna 6 que sea menor que la columna 5 se pinte de color rojo y si ingreso numero mayor que no se pinte
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

NOTA DE RAMON

Publicado por Ramón (90 intervenciones) el 18/01/2006 13:17:32
¿De verdad probaste el código que te dije?. Aquí te pongo el procedimiento completo, que he comprobado que funciona.
Es un MsFlexGrid con 6 columnas, la última oculta (Propiedad Width a cero), al escribir un número en la columna 5 se activa la columna 6 y se posiciona en esta columna de la misma fila, al validar (ENTER) la columna 6 compara con la 5 y si es menor lo pinta si no lo hace.
El bucle For efectivamente recorre fila por fila (que no sé para qué vale, ya que estamos comparando dos columnas de la misma fila) y al recorrer todo el Grid termina posicionándose en la columna 6 pero de la última fila.
Bueno, a lo dicho ahí va el código, pruébalo y si no es lo que quieres me lo indicas.
Private Sub MSFlexGrid1_keypress(keyascii As Integer)
If keyascii >= 32 And keyascii <= 127 Then
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(keyascii)
End If
Select Case keyascii
Case vbKeyReturn, vbKeyTab
With MSFlexGrid1
If ((.Col + 6 < .Cols - 1) Or .Col = 5) Then
' Aquí deberías poner un control para solo se escriban números
.ColWidth(6) = 960
.Col = .Col + 1
ElseIf .Col = 6 Then
If IsNumeric(.TextMatrix(.Row, 6)) And .TextMatrix(.Row, 6) < .TextMatrix(.Row, 5) Then
.CellForeColor = vbRed
For A = 1 To .Cols - 1
.Col = A
.CellBackColor = RGB(100, 184, 150)
.Col = 6
Next A
End If
End If
End With
End Select
End Sub
Saludos. >Ramón
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