[resolvido] Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Moderador: Avelino Sampaio

Alexsandro
Mensagens: 9
Registrado em: 18 Abr 2017, 12:31

[resolvido] Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Alexsandro » 06 Fev 2018, 01:25

Num subformulário contínuo coloquei uma combobox com duas opções de valores: TELEFONE; IMEI. Na propriedade "Após Atualizar" coloquei o código abaixo:

Código:
Private Sub TelefoneIMEI_AfterUpdate()
If Len(Me.Terminal) <= 11 Then
Me.Terminal.InputMask = "!\(99\)99900\-0000;0;_"
Else
Me.Terminal.InputMask = ""
End If
End Sub



O problema é que a máscara é aplicada em todos os registros do subformulário. Alguém tem alguma ideia de como faço. Já pesquisei bastante e não encontro solução.

Os celulares são deixados para conserto e meu objetivo é que ao mudar o valor da combobox para TELEFONE a função irá verificar se o campo TERMINAL realmente corresponde a um numero de telefone tipo 81123456789 e aplique a máscara correspondente. Porém se o campo TERMINAL contiver mais de 11 caracteres será considerado como um número de IMEI e não aplicará qualquer máscara.
Última edição por Alexsandro em 07 Fev 2018, 12:21, editado 1 vez no total.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Avelino Sampaio » 06 Fev 2018, 14:08

Alex,

vc deve utilizar o evento "No atual" do subformulário.

Código:
Private Sub Form_Current()
If Me!TelefoneIMEI = "Telefone" Then
Me.Terminal.InputMask = "!\(99\)99900\-0000;0;_"
Else
Me.Termainal.InputMask = ""
End If
End Sub


E no evento "após atualizar" da combobox, coloque:

Código:
Private Sub TelefoneIMEI_AfterUpdate()
Call Form_Current
End Sub


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Alexsandro
Mensagens: 9
Registrado em: 18 Abr 2017, 12:31

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Alexsandro » 06 Fev 2018, 15:49

Obrigado por sua atenção Avelino, acompanho seu trabalho há anos.

Porém continuou alterando a máscara em todos os registros do subformulário contínuo que obedeciam ao crítério especificado (=<11).
Como testes acrescentei mais um comando e este funciona corretamente alterando apenas o registro da linha no formulário contínuo.

Código:
Private Sub Form_Current()
If Me!TelefoneIMEI = "Telefone" Then
Me.Terminal.InputMask = "!\(99\)99900\-0000;0;_"
Me.Alias = "certo"
Else
Me.Terminal.InputMask = ""
Me.Alias = "errado"
End If
End Sub


Em vermelho estão as linhas que eu acrescentei para testes no campo ALIAS, e no campo ALIAS está funcionando como deveria, alternando apenas no registro atual o valor "certo" e "errado", porém aplicando no campo TERMINAL em todos os registros a máscara correspondente.

Alexsandro
Mensagens: 9
Registrado em: 18 Abr 2017, 12:31

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Alexsandro » 06 Fev 2018, 16:02

Avelino estou postando o modelo caso voce não esteja entendendo o que quero fazer está no formulário SubFrmCadTerminais
Última edição por Alexsandro em 07 Fev 2018, 12:26, editado 1 vez no total.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Avelino Sampaio » 06 Fev 2018, 16:32

Alex

analisando a tabela, verifiquei que a máscara não foi salva quando vc digitou os telefones. faça o seguinte:

- Altere novamente a combobox do primeiro registro para TELEFONE
- redigite o telefone
- veja se com isso foi gravado o telefone na tabela, com a máscara.

Aguadamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Alexsandro
Mensagens: 9
Registrado em: 18 Abr 2017, 12:31

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Alexsandro » 06 Fev 2018, 18:49

Não funcionou! Acho que só funciona em formulário simples. O código na propriedade atual impede a inserção de novos registros, acho que por que a combobox tem a coluna chave primaria oculta.

Alexsandro
Mensagens: 9
Registrado em: 18 Abr 2017, 12:31

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Alexsandro » 06 Fev 2018, 19:02

Acabei de testar. Mesmo no formulário configurado com simples e o evento na propriedade "após atualizar" do campo TelefoneIMEI a mascara é alterada em todo o formulário curioso é que na tabela segue inalterada.

Avatar do usuário
Avelino Sampaio
Mensagens: 1901
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Avelino Sampaio » 06 Fev 2018, 19:26

Alex

- retire temporariamente o código utilizado no evento "ao receber foco" da combobox.

- observe na imagem abaixo que eu estou com o foco no IMEI do terceiro registro e os telefones acima estão com a máscara. Isso porque eu havia registrado novamente os telefones com o código no evento "no atual".

alex1.gif


Nota: antes de inserir novamente os números, eu entro com o valor na combobox, para que o evento "após atualizar" da combobox insira a máscara quando for telefone.

Observe na imagem abaixo, a tabela com os números de telefones registrados com as máscaras.

Aguardamos
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Alexsandro
Mensagens: 9
Registrado em: 18 Abr 2017, 12:31

Re: Como faço para uma Máscara em campo de um formulário contínuo não mudar todos os registros?

Mensagempor Alexsandro » 06 Fev 2018, 20:00

Perfeito Avelino, consegui editar os registros e agora está funcionando bem ao alterar o valor Telefone ou IMEI.
Pelo que entendi devo mudar primeio a máscara no campo e só depois inserir o número para que a formatação seja salva na tabela e consequentemente exibida no formulário.

Só não consigo inserir novos registros por meio da Combinação6, que seleciona o TERMINAL digitado da tabela TblTerminais e caso ele não exista, há uma função na propriedade "Se não estiver na lista" que insere automaticamente na TblTerminais o valor digitado na combinação6, disponibilizando então este novo registro na própria combinação6.

Estou tentando ver como posso contornar esse problema. Tirando a função da propriedade no atual o registro resolve, mas aí se contrapõe a solução apresentada por você.
Se você puder observar esse fato no exemplo que te mandei agradeço, a inserção começa pela seleção de um TERMINAL no campo de rótulo " Identificação do Terminal".
De qualquer forma considero solucionado o problema da máscara.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Formulários”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 9 visitantes