Unidad 46. Objetos, el teclado (II)





46.5. Validaciones.

Salvados esos dos pasos, longitud y cuales, el siguiente paso es comprobar la veracidad de los datos introducidos.

Hay informaciones que son imposibles de comprobar, un nombre, una dirección, solo es posible asumirlos y prepararlos para su almacenamiento en la base de datos.

Pero hay otros que si es posible comprobarlos, porque su contenido es un código, y ese código debe comprobar se su existencia, realizando la lectura de comprobación correspondiente.

El final del camino es conseguir un control sobre los datos que se escriben en un programa para eliminar al máximo los errores en los datos de nuestra aplicación.

Los datos deben controlarse en el momento en el que se introducen en la aplicación, de esta forma se reduce posteriormente el código que hay que escribir en los programas que tratan estos datos.

 

No siempre es posible realizar este control exhaustivo con los datos de un objeto, porque el objeto no dispone de los medios, eventos adecuados para ese fin, en ese caso la validación habrá que realizar la validación en el momento de abandonar el objeto, perder el foco, y siempre antes de realizar la grabación de los datos, rechazando la grabación si no se cumplen los requisitos que nosotros necesitamos.

 

Disponemos de los eventos validating y validated para realizar dicha tarea en cada objeto.

En estos eventos podremos comprobar los datos y cancelar la transición de un objeto al siguiente, si no se dan las circunstancias adecuadas.

El datagrid es otro tema, es un objeto muy amplio y con una serie de características que requieren un tema a parte.

46.6. Ejemplo de filtrado en el tratamiento 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))

  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, no nos interesa

            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

 

Se supone que además en la propiedad que índica la máxima longitud del campo, ésta se ha ajustado al tamaño del campo.

46.7. Validación.

Esta podría ser una opción de validación de un programa.

Arrancamos del evento validating del objeto en cuestión.

 

Private Sub Campo00_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

 

No hay porque tener un procedimiento escrito para realizar la validación, podría realizarse toda la tarea en el evento, pero es cuestión de estilos.

Expliquemos la línea de llamada.

 

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

 

Cual                                    es un valor que índica el objeto que ha producido el evento.

CType(sender, TextBox)       realiza la conversión del objeto a textbox, para recibir un objeto concreto en el procedimiento.

e.Cancel                              es el parámetro que nos va a permitir cancelar si procede la transición de un objeto a otro.

 

  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

 

Suponemos que el campo uno es un código y se realiza una lectura de comprobación sobre un sistema de almacenamiento, archivos, bases de datos.

En este procedimiento cuando proceda la variable Cancel se activa a cierto, y de esta forma se cancela la transición de uno a otro objeto.

 

Un ejemplo más amplio de una validación.

Se puede observar que no siempre hay acción de control, y que solo hay acciones de formato en algunos casos.

 

Private Sub Validacion(ByVal Cual As Integer, _

                       ByRef Campo As TextBox, _

                       ByRef Cancel As Boolean)

    Cancel = False

    Select Case Cual

      Case 1, 2, 3            ' Porcentaje de descuento

        Select Case Campo.Text <> ""

          Case True

            Select Case InStr(Campo.Text, ".") > 0

              Case True

                MsgBox("El símbolo decimal ha de ser la coma.", _

                       MsgBoxStyle.Information, NomProgram)

                Cancel = True

              Case Else

                Select Case CDbl(Campo.Text) < 0 Or CDbl(Campo.Text) > 100

                  Case True

                    MsgBox("Porcentaje de descuento incorrecto.", _

                           MsgBoxStyle.Information, NomProgram)

                    Cancel = True

                  Case Else

                    Campo.Text = Format(CDbl(Campo.Text), "00.00")

                End Select

            End Select

          Case Else

            Campo.Text = "0.0"

        End Select

      Case 4

        Select Case Campo.Text <> ""

          Case True

            Campo.Text = Format(CDbl(Campo.Text), "#,##0.00")

          Case Else

            Campo.Text = "0.0"

        End Select

      Case 5, 6, 7, 8

        Campo.Text = Format(CDbl(Campo.Text), "#,##0.00")

      Case 9, 10

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

    End Select

 End Sub

 

El resumen es sencillo:

 

Control de entrada de datos, longitud y selección de teclado.

Validación de lo que se ha introducido.

 

Para posteriormente proceder según lo requiera el programa.

 

Octubre-2010
Pág. 46.2

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

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