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