Programación General > Visual Basic 6.0 e inferiores
Restringir Ingreso De Datos
(1/1)
DiabloRojo:
Hola.
La pregunta es: ¿Cómo puedo restringir el ingreso de datos a un datagrid?. Es decir, cómo puedo hacer para que en una columna sólo pueda ingresar números y en otra solo caracteres?. De antemano agradezco cualquier ayuda o comentario.
DiabloRojo.
jodijo5:
necesariamente tienes que hacerlo en un datagrid, por que nolo haces en mshflexgrid
--- Código: Text --- set dbf=db.execute("select col_validado from mi_tabla")do until(dbf.eof)mshflexgrid1.row=mshflexgrid1.row+1if(isnumeric(dbf(0))) mshflexgrid1.col=1else mshflexgrid1.col=2end ifmshflexgrid1.text=dbf(0)dbf.movenextloop
DiabloRojo:
Hola Jodijo5.
Gracias por responder a mi pregunta.
Aclaro un poco la situación... Uso un datagrid porque lo que trato de hacer es agregar registros a un recordset directamente sobre el datagrid. Es decir, uso el datagrid más para ingresar datos que para mostrarlos. El problema está en que la primera columna del datagrid sólo debería aceptar datos numéricos; la segunda, sólo datos tipo caracter (letras) y; la tercera columna, aceptar tanto letras como números que es como por defecto actúa el datagrid. Entonces mi duda es cómo puedo indicarle al datagrid que sólo acepte números en la primera columna y sólo letras en la segunda?.
DiabloRojo.
patitofeo:
Utiliza el evento KeyPress
--- Código: Text ---Private Sub DataGrid1_KeyPress(KeyAscii As Integer)If KeyAscii <> 8 Then If (KeyAscii < 48) Or (KeyAscii > 57) Then KeyAscii = 0 End IfEnd IfEnd Sub
El codigo anterior solo te dejaria ingresar números de 0 al 9 y borrarlos.
Comparas la letra pulsada que aparece en el parametro KeyAscii, si no esta en el rango que quieres, lo pones a cero de modo que se anula y el Control actua como si no lo hubiera recibido.
Pruebalo, es muy facil. Si tienes alguna duda, dimelo
SAludos
DiabloRojo:
Sí patitofeo esa es la forma!. Ahora para que cada columna tenga su restricción específica yo lo hago de la siguiente manera:
--- Código: Text --- Private Sub DataGrid1_KeyPress(KeyAscii As Integer) Select Case DataGrid1.Col Case 0 'acepta cualquier caracter (número o letra) para la primera 'posicion If ((KeyAscii <= 13) Or (KeyAscii >= 48) And (KeyAscii <= 57)) Then 'sólo números KeyAscii = KeyAscii Else KeyAscii = 0 End If Case 1 If ((KeyAscii <= 13) Or (KeyAscii >= 65 And KeyAscii <= 90) Or (KeyAscii >= 97 And KeyAscii <= 122)) Then ' Solo letras KeyAscii = KeyAscii Else KeyAscii = 0 End If Case 2 KeyAscii = KeyAscii ' Letras, números y cualquier caracter End SelectEnd Sub
Gracias a todos los que aportaron sus ideas.
DiabloRojo.
Navegación
Ir a la versión completa