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.
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.
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.
Síguenos en: Facebook Sobre aulaClic Política de Cookies