Unidad 44. ¿Cómo se hace un programa? (III)





2    Solución al problema.

Empecemos por la parte de validación de los datos.

La validación se puede dividir:

Filtrado de datos en el teclado, eliminando aquello que no nos interesa.

Validación y control de los datos introducidos.

 

El filtrado de los datos que se introducen por teclado se basa en la implementación de código de filtrado de las teclas que se pulsan para cada dato que se introduce en una caja de texto, evidentemente en el resto de objetos en los que no interviene la entrada de datos por teclado eso no es posible.

Para ello partimos que los datos a introducir se pueden agrupar en dos tipos básicos, aunque se pueden crear tantos como se necesite para personalizar la entrada de datos en cada campo.

Podemos crear una entrada de datos para campos numéricos y otra para alfanuméricos.

En el primero podemos filtrar toda tecla que no sea un valor entre 0 y 9, y podemos contemplar según corresponda “+”,”-“,”,”,”.”,”/”,”*”, etc, adecuados al dato.

En los alfanuméricos podemos permitir todos los caracteres desde el espacio, ascii 32 hasta el 255, aunque también se puede reducir el rango, todo dependerá del momento.

 

 

Para obtener buenos resultados debemos intervenir en los eventos de teclado.

 

 Private Sub Campo01_KeyPress(ByVal sender As Object, _

  ByVal e As System.Windows.Forms.KeyPressEventArgs) _

  Handles Campo01.KeyPress, _

  Campo02.KeyPress

  Dim Cual As Integer = CInt(Strings.Right(CType(sender, TextBox).Name, 2))

  TratarTeclado(Cual, e)

 End Sub

 

En este evento se puede controlar cual es la tecla que se está usando y anular su uso o admitirlo.

 

Podemos hacerlo utilizando

 

  Select Case Char.IsDigit(e.KeyChar) Or _

  Char.IsNumber(e.KeyChar) Or _

  Char.IsPunctuation(e.KeyChar) Or _

  Char.IsLetter(e.KeyChar) Or _

  Char.IsSeparator(e.KeyChar)

 

O utilizando

 

  Select Case Asc(e.KeyChar)

  Case 48 To 57 ' números solo, es código

  Case 8, 13   ' retroceso e intro

 

Veamos un ejemplo completo.

 

  Private Sub TrataTeclado(ByVal Cual As Integer, _

ByVal e As System.Windows.Forms.KeyPressEventArgs)

  Select Case Cual

  Case 1 ' código

  Select Case Asc(e.KeyChar)

  Case 48 To 57 ' números solo es código

  Case 8, 13   ' retroceso e intro

  Case Else

  ' no vale

  e.Handled = True

  End Select

  Case 2   ' nombre

  Select Case Asc(e.KeyChar)

  Case 32 To 255  ' es texto, se admite todo

  Case 8, 13   ' retroceso e intro

  Case Else

  ' no vale

  e.Handled = True

  End Select

  End Select

  End Sub

 

Es una versión reducida y ampliable.

 

Resuelta la parte de control de escritura hay que resolver la parte de control de lo que se ha escrito.

Para ello hay que actuar cuando se ha finalizado la introducción de los datos.

Normalmente se realiza solo para las cajas de texto, pues en los demás objetos no suele ser necesario.

El evento en el que hay que realizar el control debe ser el que se produce al abandonar el objeto, o en el que esté especializado para ello, en el caso de VB es el validating.

 

Private Sub Campo01_Validating(ByVal sender As Object, _

ByVal e As System.ComponentModel.CancelEventArgs) _

  Handles Campo01.Validating, _

  Campo02.Validating

Dim Cual As Integer

Cual = CInt(Strings.Right(CType(sender, TextBox).Name, 2))

Validacion(Cual, CType(sender, TextBox), e.Cancel)

End Sub

 

Y el procedimiento encargado de la tarea de control:

 

  Private Sub Validacion(ByVal Cual As Integer, _

ByRef Campo As TextBox, _

ByRef Cancel As Boolean)

  Cancel = False

  Select Case Cual

  Case 1

  If Campo.Text <> "" Then

  Campo.Text = Format(CInt(Campo.Text), "0000")

  LeerRegistro(Campo01.Text, Cancel)

  End If

  Case 2

 

  End Select

  End Sub

 

En el ejemplo solo se transcribe el campo código, pero se controlan todos los campos de texto del programa, realizando control en aquellos que es posible, ya que los datos como nombre, domicilios etc. , no es posible controlarlos y solo cabe realizar el pasar al siguiente dato.

Si en el control de lectura del código se produce un error la variable cancel tomaría el valor cierto y se anularía la transición de un campo al siguiente.

 

El código del procedimiento de lectura ya dependerá del sistema de datos utilizado.

Octubre-2010
Pág. 44.3

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies