SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: DiabloRojo en Jueves 8 de Septiembre de 2005, 22:21

Título: Restringir Ingreso De Datos
Publicado por: DiabloRojo en Jueves 8 de Septiembre de 2005, 22:21
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.
Título: Re: Restringir Ingreso De Datos
Publicado por: jodijo5 en Jueves 8 de Septiembre de 2005, 23:43
necesariamente tienes que hacerlo en un datagrid, por que nolo haces en mshflexgrid
Código: Text
  1.  
  2. set dbf=db.execute("select col_validado from mi_tabla")
  3. do until(dbf.eof)
  4. mshflexgrid1.row=mshflexgrid1.row+1
  5. if(isnumeric(dbf(0)))
  6.       mshflexgrid1.col=1
  7. else
  8.       mshflexgrid1.col=2
  9. end if
  10. mshflexgrid1.text=dbf(0)
  11. dbf.movenext
  12. loop
  13.  
Título: Re: Restringir Ingreso De Datos
Publicado por: DiabloRojo en Viernes 9 de Septiembre de 2005, 14:49
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.
Título: Re: Restringir Ingreso De Datos
Publicado por: patitofeo en Viernes 9 de Septiembre de 2005, 16:21
Utiliza el evento KeyPress

Código: Text
  1. Private Sub DataGrid1_KeyPress(KeyAscii As Integer)
  2. If KeyAscii <> 8 Then
  3.     If (KeyAscii < 48) Or (KeyAscii > 57) Then
  4.         KeyAscii = 0
  5.     End If
  6. End If
  7. End Sub
  8.  

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
Título: Re: Restringir Ingreso De Datos
Publicado por: DiabloRojo en Sábado 10 de Septiembre de 2005, 03:18
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
  1.  
  2. Private Sub DataGrid1_KeyPress(KeyAscii As Integer)
  3.     Select Case DataGrid1.Col
  4.       Case 0
  5.          'acepta cualquier caracter (número o letra) para la primera
  6.          'posicion
  7.          If ((KeyAscii <= 13) Or (KeyAscii >= 48) And (KeyAscii <= 57)) Then 'sólo números
  8.             KeyAscii = KeyAscii
  9.          Else
  10.             KeyAscii = 0
  11.          End If
  12.       Case 1
  13.           If ((KeyAscii <= 13) Or (KeyAscii >= 65 And KeyAscii <= 90) Or (KeyAscii >= 97 And KeyAscii <= 122)) Then ' Solo letras
  14.              KeyAscii = KeyAscii
  15.           Else
  16.              KeyAscii = 0
  17.           End If
  18.       Case 2
  19.          KeyAscii = KeyAscii ' Letras, números y cualquier caracter
  20.    End Select
  21. End Sub
  22.  
  23.  

Gracias a todos los que aportaron sus ideas.

DiabloRojo.