LIMITANDO CARACTERES
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.
[ô]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.
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.
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. .
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...
Nesse caso, faça a validação na propriedade de classe referente à textbox.
Fonte para eu fazer isso ou algum exemplo?
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
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
Já que vc usa o MaxLength é só comparar se o numero de caracteres da textbox é diferente do MaxLength....
Ex:
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
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?
[ô]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?
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....
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....
Tópico encerrado , respostas não são mais permitidas