MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Máscara telefone com 10 ou 11 digitos

    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 513
    Registrado : 25/05/2011

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  vileman em 28/4/2019, 03:15

    Boa noite !

    Após buscas neste site nos tópicos:
    http://www.maximoaccess.com/t22981-resolvidomascara-de-telefone
    http://www.maximoaccess.com/t27580-resolvidoconfigurar-mascara-para-telefone-com-10-ou-11-digitos
    http://www.maximoaccess.com/t17392-inserir-mascara-de-telefone-com-8-ou-9-digitos-e-salvar-na-tabela

    e outros:
    https://pt.stackoverflow.com/questions/21487/como-fazer-uma-mascara-no-ms-access-que-funciona-para-telefones-de-10-ou-11-d%C3%ADgi
    http://www.tomasvasquez.com.br/forum/viewtopic.php?t=4544

    não consegui resolver o seguinte:

    Como configurar em um formulário, um campo para cadastrar o número de telefone de forma que a máscara obedeça a quantidade de números inseridos e se mantenha sempre a cada registro?
    Exemplo:

    Fone: 8131827212 Com máscara para 10 dígitos: (81)3182-7212
    Fone: 81998842018 Com máscara para 11 dígitos: (81)99884-2018

    OBS: No caso em questão estou usando o campo 'FonePessoa' (Tipo: Texto. Tamanho: 11) em um subformulário com Máscara de Entrada: \(99") "99999\-9999;;
    Na tabela o registro é salvo com 10 ou 11 digitos, mas no subformulário a cada vez que clico em um registro ele muda a máscara do registro anterior ou do próximo, caso seja uma quantidade diferente (10 ou 11 digitos), conforme imagens em anexo.

    [Resolvido]Máscara telefone com 10 ou 11 digitos Fone_i14  
    [Resolvido]Máscara telefone com 10 ou 11 digitos Fone_i15

    Observem que:
    1) na 1ª imagem o nº do Tipo Celular (11 digitos) está correto, mas o Tipo Comercial (10 digitos) está errado: ( 8)13182-7212, quando o correto seria: (81)3182-7212
    2) na 2ª imagem o nº do Tipo Comercial (10 digitos) está correto, mas o Tipo Celular (11 digitos) está errado: 8(19)9884-2018, quando o correto seria: (81)99884-2018

    No exemplo acima estou usando a rotina:

    Private Sub FonePessoa_AfterUpdate() 'Evento: Após Atualizar
    If Len(FonePessoa) <> "" Then
       Select Case Len(FonePessoa)
       Case 10
           Me.FonePessoa.Format = "(@@)@@@@-@@@@"
       Case 11
           Me.FonePessoa.Format = "(@@)@@@@@-@@@@"
       Case Else
           MsgBox ("Número Inválido!"), vbCritical, Me.Caption
           DoCmd.CancelEvent
           Me.FonePessoa = ""
           Me.FonePessoa.SetFocus
       End Select
    End If
    End Sub

    Como disse, também testei com várias outras rotinas, mas sem sucesso
    crysostomo
    crysostomo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 702
    Registrado : 23/01/2018

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Re: [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  crysostomo em 28/4/2019, 05:05

    Só você editar a máscara para a quantidade de dígito que você quer.


    .................................................................................
    Uma mão ajuda a outra.
    O medo não é morrer, o medo é se alguém está morto dentro de você, assim como o fracassado é aquele que nem tentou
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 513
    Registrado : 25/05/2011

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Máscara telefone com 10 ou 11 digitos

    Mensagem  vileman em 28/4/2019, 13:59

    Já havia colocado em propriedades do campo a Máscara de Entrada: \(99") "99999\-9999;;

    No caso, não resolveu, como seria então ?
    crysostomo
    crysostomo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 702
    Registrado : 23/01/2018

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Re: [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  crysostomo em 28/4/2019, 14:01

    não deu , faz na tabela do campo


    .................................................................................
    Uma mão ajuda a outra.
    O medo não é morrer, o medo é se alguém está morto dentro de você, assim como o fracassado é aquele que nem tentou
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 513
    Registrado : 25/05/2011

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Máscara telefone com 10 ou 11 digitos

    Mensagem  vileman em 28/4/2019, 14:23

    Coloquei na tabela a mesma máscara de entrada, mas continua no mesmo
    crysostomo
    crysostomo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 702
    Registrado : 23/01/2018

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Re: [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  crysostomo em 28/4/2019, 15:10

    No campo celular vai nas propriedades e na mascara de entrada coloque !\(99") "!9900\-000;0;_
    no campo comercial acrescenta mais um 0 no meio. Não precisa de condição, os próprios campos vão exigir o preenchimento


    .................................................................................
    Uma mão ajuda a outra.
    O medo não é morrer, o medo é se alguém está morto dentro de você, assim como o fracassado é aquele que nem tentou
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 513
    Registrado : 25/05/2011

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Máscara telefone com 10 ou 11 digitos

    Mensagem  vileman em 28/4/2019, 15:28

    Crysostomo,

    O Campo 'FonePessoa' é usado para fone comercial e celular, ou seja, um único campo para ambos, porisso essa dificuldade e as condições que coloquei no código
    crysostomo
    crysostomo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 702
    Registrado : 23/01/2018

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Re: [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  crysostomo em 28/4/2019, 15:31

    faz uma coisa mas design
    Código:
    Private Sub celular_AfterUpdate()
    If Me.celular > 10 Then
        MsgBox "preencha o campo com 10 digitos", vbCritical, "AVISO"
    Else
         Me.celular.InputMask = "(&&)&&&&&&&&;0;_"
    End If
    End Sub

    Private Sub comercia_AfterUpdate()
    If Me.celular > 11 Then
        MsgBox "preencha o campo com 11 digitos", vbCritical, "AVISO"
    Else
        Me.celular.InputMask = "(&&)&&&&&&&&&;0;_"
    End If
    End Sub
    só li o título e algum pedaço do texto porque estou com uma pressa
    so troca os campos.
    qualqer coisa me chama


    .................................................................................
    Uma mão ajuda a outra.
    O medo não é morrer, o medo é se alguém está morto dentro de você, assim como o fracassado é aquele que nem tentou
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 552
    Registrado : 22/11/2016

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Re: [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  IvanJr. em 28/4/2019, 15:48

    Formulários contínuos não são formulários comuns. Podemos ver o reflexo disso em comboboxes onde a origem da linha são alteradas dinamicamente ou outros tipos de controles onde as propriedades de campos ficam sendo alteradas. Tudo que é modificado se reflete por todas as linhas/formulários.

    Ao abrir a primeira linha e verificar que o campo telefone tem 11 digitos, o MS Access vai formatar todo o campo de todas as linhas/formulários de uma certa maneira.
    Ao abrir a segunda linha e verificar que o campo telefone tem 10 dígitos, o MS Access vai alterar tudo de novo refletindo em todas as linhas/formulários.

    E por aí vai até acabar a leitura da tabela.

    A solução é preparar os caracteres por completo campo a campo.
    Anexos
    [Resolvido]Máscara telefone com 10 ou 11 digitos AttachmentExemploFormatoFormContinuo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (25 Kb) Baixado 7 vez(es)


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 513
    Registrado : 25/05/2011

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Máscara telefone com 10 ou 11 digitos

    Mensagem  vileman em 28/4/2019, 16:12

    Crysostomo, vou testar e depois posto o resultado

    IvanJr., vou olhar seu exemplo e depois o resultado depois
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 513
    Registrado : 25/05/2011

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Máscara telefone com 10 ou 11 digitos

    Mensagem  vileman em 28/4/2019, 19:27

    Caro Crysostomo,

    Funcionou sua rotina, ficou assim:

    Private Sub FonePessoa_AfterUpdate()
    If Me.FonePessoa = 10 Then
      Me.FonePessoa.InputMask = "(&&)&&&&&&&&;0;_"
    End If

    If Me.FonePessoa = 11 Then
       Me.FonePessoa.InputMask = "(&&)&&&&&&&&&;0;_"
    End If
    End Sub


    Caro IvanJr.
    Funcionou sua rotina. Valeu pelas explicações, muito bom.

    Como tenho mais um formulário e subformulário, vou usar as 2 rotinas, uma para cada.

    Agradeço demais a ambos, valeu mesmo.
    Muita Paz
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 552
    Registrado : 22/11/2016

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Re: [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  IvanJr. em 28/4/2019, 20:47

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.

    Conteúdo patrocinado

    [Resolvido]Máscara telefone com 10 ou 11 digitos Empty Re: [Resolvido]Máscara telefone com 10 ou 11 digitos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/5/2019, 15:08