LIMITANDO CARACTERES

MILTONSILVA94 05/04/2016 16:55:58
#460497
Venho novamente querer diminuir meu código com outra rotina, é possível simplificar esta rotina abaixo?

[ô]Início da rotina para limitar caracteres
If Len(txtNascimento.text) < 10 Then
MensagemDoSistema [Ô]Campo [ô]Nascimento[ô] incorreto, verifique antes de salvar![Ô]
txtNascimento.text = [Ô][Ô]
txtNascimento.SetFocus
Exit Sub
End If
If Len(txtCpf.text) < 14 Then
MensagemDoSistema [Ô]Campo [ô]CPF[ô] incorreto, verifique antes de salvar![Ô]
txtCpf.text = [Ô][Ô]
txtCpf.SetFocus
Exit Sub
End If
If Len(txtRg.text) < 10 Then
MensagemDoSistema [Ô]Campo [ô]RG[ô] incorreto, verifique antes de salvar![Ô]
txtRg.text = [Ô][Ô]
txtRg.SetFocus
Exit Sub
End If
If Len(txtCep.text) < 9 Then
MensagemDoSistema [Ô]Campo [ô]Cep[ô] incorreto, verifique antes de salvar![Ô]
txtCep.text = [Ô][Ô]
txtCep.SetFocus
Exit Sub
End If
If Len(txtPisPasep.text) < 3 Then
MensagemDoSistema [Ô]Campo [ô]Banco[ô] incorreto, verifique antes de salvar![Ô]
txtBancoNumero.text = [Ô][Ô]
txtBancoNumero.SetFocus
Exit Sub
End If
If Len(txtAgencia.text) < 5 Then
MensagemDoSistema [Ô]Campo [ô]Agência[ô] incorreto, verifique antes de salvar![Ô]
txtAgencia.text = [Ô][Ô]
txtAgencia.SetFocus
Exit Sub
End If
If Len(txtPisPasep.text) < 14 Then
MensagemDoSistema [Ô]Campo [ô]Pis/Pasep[ô] incorreto, verifique antes de salvar![Ô]
txtPisPasep.text = [Ô][Ô]
txtPisPasep.SetFocus
Exit Sub
End If
If Len(txtCtpsNumero.text) < 7 Then
MensagemDoSistema [Ô]Campo [ô]CTPS nº[ô] incorreto, verifique antes de salvar![Ô]
txtCtpsNumero.text = [Ô][Ô]
txtCtpsNumero.SetFocus
Exit Sub
End If
If Len(txtCtpsSerie.text) < 5 Then
MensagemDoSistema [Ô]Campo [ô]CTPS Série[ô] incorreto, verifique antes de salvar![Ô]
txtCtpsSerie.text = [Ô][Ô]
txtCtpsSerie.SetFocus
Exit Sub
End If
If Len(txtTituloEleitorNumero.text) < 14 Then
MensagemDoSistema [Ô]Campo [ô]Título Eleitor nº[ô] incorreto, verifique antes de salvar![Ô]
txtTituloEleitorNumero.text = [Ô][Ô]
txtTituloEleitorNumero.SetFocus
Exit Sub
End If
If Len(txtTituloEleitorZona.text) < 3 Then
MensagemDoSistema [Ô]Campo [ô]Título Eleitor Zona[ô] incorreto, verifique antes de salvar![Ô]
txtTituloEleitorZona.text = [Ô][Ô]
txtTituloEleitorZona.SetFocus
Exit Sub
End If
If Len(txtTituloEleitorSecao.text) < 4 Then
MensagemDoSistema [Ô]Campo [ô]Título Eleitor Seção[ô] incorreto, verifique antes de salvar![Ô]
txtTituloEleitorSecao.text = [Ô][Ô]
txtTituloEleitorSecao.SetFocus
Exit Sub
End If
If Len(txtCnhNumero.text) < 11 Then
MensagemDoSistema [Ô]Campo [ô]CNH nº[ô] incorreto, verifique antes de salvar![Ô]
txtCnhNumero.text = [Ô][Ô]
txtCnhNumero.SetFocus
Exit Sub
End If
If Len(txtTelefoneResidencial.text) < 12 Then
MensagemDoSistema [Ô]Campo [ô]Telefone Residencial[ô] incorreto, verifique antes de salvar![Ô]
txtTelefoneResidencial.text = [Ô][Ô]
txtTelefoneResidencial.SetFocus
Exit Sub
End If
If Len(txtTelefoneCelular.text) < 12 Then
MensagemDoSistema [Ô]Campo [ô]Telefone Celular[ô] incorreto, verifique antes de salvar![Ô]
txtTelefoneCelular.text = [Ô][Ô]
txtTelefoneCelular.SetFocus
Exit Sub
End If
If Len(txtDataAdmissao.text) < 10 Then
MensagemDoSistema [Ô]Campo [ô]Data Admissão[ô] incorreto, verifique antes de salvar![Ô]
txtDataAdmissao.text = [Ô][Ô]
txtDataAdmissao.SetFocus
Exit Sub
End If
[ô]Fim da rotina

OBS.: Aproveito já para deixar abaixo o modo que uso para validar os campos em branco:
[ô]Início da rotina que valida campos em branco(Na propriedade Tag de cada campo, colocar o nome do campo)
For i = 0 To Me.Controls.Count - 1
Set ArrayControles(i) = Me.Controls(qtd - 1)
qtd = qtd - 1
Next i

For i = 0 To Me.Controls.Count - 1
If TypeOf ArrayControles(i) Is TextBox Then
If ArrayControles(i).text = [Ô][Ô] Then
MensagemDoSistema [Ô]Campo [ô][Ô] & ArrayControles(i).Tag & [Ô][ô] não foi informado, verifique antes de salvar![Ô]
ArrayControles(i).SetFocus
Exit Sub
End If
ElseIf TypeOf ArrayControles(i) Is ComboBox Then
If Trim(ArrayControles(i).ListIndex = 0) Then
MensagemDoSistema [Ô]Campo [ô][Ô] & ArrayControles(i).Tag & [Ô][ô] não foi informado, verifique antes de salvar![Ô]
ArrayControles(i).SetFocus
Exit Sub
End If
End If
Next i
[ô]Fim da rotina

Agradeço as sugestões.
KERPLUNK 05/04/2016 20:53:09
#460525
Você nem precisa disso. Os controles TextBox, têm uma propriedade chamada [Ô]MaxLength[Ô], ela quem define o número máximo de caracteres para o campo.
JOHNSTEVE 05/04/2016 21:07:22
#460527
Citação:

:
Você nem precisa disso. Os controles TextBox, têm uma propriedade chamada [Ô]MaxLength[Ô], ela quem define o número máximo de caracteres para o campo.



verdade que o Kerplunk falou. somente vc escolher a quantidade de caracteres vc quer em determinado textbox. Combobox. .



MILTONSILVA94 06/04/2016 07:19:17
#460544
Citação:

:
Você nem precisa disso. Os controles TextBox, têm uma propriedade chamada [Ô]MaxLength[Ô], ela quem define o número máximo de caracteres para o campo.


Exatamente, defini na propriedade [ô]maxlength[ô] porém se num determinado campo eu determino o valor 10, eu coloco o código acima caso o usuário digite apenas 8, ou 9 caracteres, sendo que deve ser 10... Por isso da importância do código acima.
Porém como tenho alguns form com vários campos, gostaria de simplificar o código que tenho...
MILTONSILVA94 06/04/2016 17:03:26
#460629
KERPLUNK 06/04/2016 17:20:28
#460632
Nesse caso, faça a validação na propriedade de classe referente à textbox.
MILTONSILVA94 07/04/2016 11:00:58
#460664
Fonte para eu fazer isso ou algum exemplo?
PLUGSOFTSM 07/04/2016 12:09:03
#460679
Vi que vc usa o VB6

Vai duas dicas:
1 - Usa o evento validated do componente e lá vc trata tudo que quiser para aquele item
2 - Pensa na possibilidade de mudar para a programação .NET
Sei que vc deve ter clientes e, necessidade de ajustar teu sistema, não dando tempo pra reescrever o código. Comigo aconteceu o mesmo. Sabe o que eu fiz? comecei a desenvolver dll em .NET e chamava essas dll dentro do meu programa em VB6 e, tudo que eu desenvolvia de novo eu colocava nas dll e, ao mesmo tempo, dentro das possibilidades, eu reescrevia o meu aplicativo. Antes mesmo do que eu imaginava eu já tinha meu Sistema todo em .NET;
Acredite: Não vai te arrepender se seguir meu conselho
GANDA.NICK 07/04/2016 12:46:55
#460684
Já que vc usa o MaxLength é só comparar se o numero de caracteres da textbox é diferente do MaxLength....

Ex:

    Dim ctrl As Control
For Each ctrl In Me
If TypeOf ctrl Is TextBox Then
If Len(ctrl.Text) <> ctrl.MaxLength Then
MsgBox [Ô]Campo [Ô] & ctrl.Tag & [Ô] incorreto, verifique antes de salvar![Ô]
End If
End If
Next
MILTONSILVA94 07/04/2016 12:52:35
#460685
PLUGSOFTSM, mas daí se eu usar o evento [ô]Validate[ô] vai ficar quase do mesmo tamanho do meu pois vai dar o mesmo número de linhas comparado com meu código atual:

[ô]fazendo no validate
Private Sub txtTelefone_Validate(Cancel As Boolean)
If Len(txtTelefone.Text) < 13 Then
MensagemDoSistema [Ô]Campo [ô]Telefone[ô] incorreto, verifique antes de salvar![Ô]
txtTelefone.Text = [Ô][Ô]
Cancel = True
End If
End Sub

[ô]meu código atual
If Len(txtTelefone.text) < 13 Then
MensagemDoSistema [Ô]Campo [ô]Telefone[ô] incorreto, verifique antes de salvar![Ô]
txtTelefone.text = [Ô][Ô]
txtTelefone.SetFocus
Exit Sub
End If

Viu?
GANDA.NICK 07/04/2016 13:12:58
#460688
viu meu post?

resolve o numero de caracteres, mas fica com o problema de poder digitar letras em campos numericos e vice-versa....

na propriedade tag vc pode colocar por exemplo [Ô]n-Telefone[Ô], depois separa o n de Telefone, o n significa só numeros e faz uma função para verificar se é mesmo só numeros que foram digitados na textbox.... e fica com o Telefone para dizer que esse campo tá errado....
Página 1 de 3 [22 registro(s)]
Tópico encerrado , respostas não são mais permitidas