Entrada de dados - Validação e crítica


Validação e crítica dos dados

Lembre-se : "O usuário não é tão leigo quanto imaginamos que seja nem tão expert quanto queiramos que seja", e, se formos nos ater a questão da qualidade , um sistema serão tão bom quanto mais fácil for sua utilização pelo usuário, afinal "O usuário sempre tem razão !" (eu não devia ter escrito isto.).

Muitas vezes ao desenvolver um sistema e realizar os testes ( você realmente faz isto !) , principalmente quando o sistema esta trazendo um ambiente novo ao usuário, esquecemos de levar em conta sua experiência praticamente nula no novo ambiente. Se o usuário usava um sistema em Clipper onde tinha que teclar ENTER para mudar para o próximo campo ele vai estranhar muito ter que usar a tecla TAB para fazer isto.

Você deve prever com antecedência as possíveis causas de erros e preparar o sistema para interagir com o usuário quer impedindo-o de realiazar determinada ação quer orientando-o a realizar a ação correta. então, se um determinado dado deve ser informado com letras maiúsculas, se em um campo deve ser informado somente valores numéricos , se um campo depender da informação de outro campo , etc. você deve preparar o seu sistema para que tudo seja feito corretamente da forma mais transparente possível para o usuário.

Tudo isto se torna mais crítico quando estamos trabalhando com banco de dados pois a validação e crítica dos dados antes de sua efetiva gravação no banco de dados irá tornar mais confiável os dados armazenados em seu sistema. Um bom esquema de critíca e validação de dados além de tornar o seu sistema mais amigável pode aumentar a velocidade dos usuários na alimentação de dados do sistema.

Os principais pontos abordados quando se trata de validação e crítica na entrada de dados podem ser enumerados como a seguir:

  1. Validação a nível de campo ou validação a nível de formulário
  2. Filtrando a entrada de dados pelo teclado para aumentar a velocidade
  3. Usando máscaras em campos para indicar ao usuário como entrar com os dados
  4. Limitando a escolha do usuário e usando listas de validação para dados
  5. Trabalhando com entrada de dados obrigatórias em formulários
  6. Tratamento de campos com entrada de dados condicionais em formulários

Então, antes de criar o seu formulário para entrada de dados , uma boa prática é relacionar os campos que você vai precisar usar no formulário e fazer as seguintes perguntas:

  1. Este dado precisa ser informado neste campo.? O campo é requerido ?
  2. Quais os caracteres são válidos/inválidos para este campo ? (Somente letras, somente números, etc..)
  3. Para campos númericos há um limite ou uma faixa válida para estes dados ? ( maior que zero, menor que 100 , etc.)
  4. Existe uma lista de valores válidos para este campo ?
  5. Este campo é condicional ? ( se o usuário informar SIM no campo A vai precisar informar algo no campo B )

Filtrando a entrada de dados via teclado

Para filtrar a entrada de dados via teclados temos que capturar a entrada via teclado antes que ela apareça na tela e filtrar os caracteres que não desejamos no campo do formulário. Podemos então converter uma entrada inválida ou emitir um aviso sonoro ao usuário , um beep , informando que o caractere informado não é válido. Vejamos a seguir as principais formas de filtrar a entrada de dados via teclado.

1-) Trocando o TAB pelo ENTER

Como mudar o foco de um controle para outro quando o usuário pressionar a tecla ENTER ? Você algum dia já fêz esta pergunta , certo ? Bem você pode fazer isto da seguinte maneira:

  1. Insira o código abaixo no evento KeyPress do formulário e defina a propriedade KeyPreview do formulário para True. Quando o usuário pressiona uma tecla ela é enviada para o controle que tem o foco, a menos que você defina propriedade KeyPreview do formulário como True , isto permite que coloquemos o tratamento para o teclado no Evento KeyPress do formulário ao invés de colocar em cada controle usado no formulário..
Private Sub Form_KeyPress(KeyAscii As Integer)
  'Esse código permite a mudança de quadro de
  'texto através do Enter
  If KeyAscii = 13 Then
    'Se o tipo do controle ativo for TextBox
    If TypeOf Screen.ActiveControl Is TextBox Then
      'Simula o pressionamento da tecla TAB
      SendKeys "{tab}"
      'A linha a seguir evita ouvir um bip
      KeyAscii = 0
    End If
  End If
End Sub

O código acima intercepta a tecla ENTER e envia um TAB , mudando o foco entre todas as caixas de texto do fomrulário. É mais simples do que colocar o código no evento KeyPress de cada caixa de texto. Se você quiser fazer isto valendo somente para uma caixa de texto então o código fica assim:

Private Sub Text1_KeyPress(KeyAscii As Integer)
  'Esse código permite a mudança de quadro de
  'texto através do Enter
  If KeyAscii = 13 Then
      'Simula o pressionamento da tecla TAB
      SendKeys "{tab}"
      'A linha a seguir evita ouvir um bip
      KeyAscii = 0
  End If
End Sub

2-) Limitando a entrada de dados

Neste exemplo vamos limitar a entrada de dados via teclado , permitindo que o usuário informe apenas valores que desejamos em um controle TextBox . Usaremos o evento KeyPress do controle TextBox para realizar nossa tarefa. Demos ao nosso controle TextBox o nome de txtnumeros.

a-) Permitindo somente a entrada de números

Private Sub txtNumeros_KeyPress(KeyAscii As Integer)

    Dim strValid As String
    strValid = "0123456789"

    If InStr(strValid, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    End If

End Sub 

Outra forma de fazer esta restrição pode ser feita com os seguintes códigos equivalentes:

Private Sub Text1_KeyPress(KeyAscii As Integer)
    'so permite valores numericos
     If KeyAscii < 48 Or KeyAscii > 57 
        then Then KeyAscii = 0
     endif
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
    'so permite valores numericos
    Select Case KeyAscii
         case 48 to 57 
           'ok
         case else
           KeyAscii = 0
    End Select
End Sub		

Aqui usamos os códigos ASCII (0 é o codigo para NULL) , ao pressionar uma tecla o evento Keypress é acionado e permite somente que sejam entrados os códigos maiores que 48 (0) e menores que 57 ( 9) . Para ver os códigos ASCII de 0 a 128 clique aqui -> codigos ASCII

Continua...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

 

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti