MaximoAccess

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

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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 : 579
    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:
    https://www.maximoaccess.com/t22981-resolvidomascara-de-telefone
    https://www.maximoaccess.com/t27580-resolvidoconfigurar-mascara-para-telefone-com-10-ou-11-digitos
    https://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
    VIP
    VIP

    Respeito às Regras 50%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1260
    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.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 579
    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
    VIP
    VIP

    Respeito às Regras 50%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1260
    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.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 579
    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
    VIP
    VIP

    Respeito às Regras 50%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1260
    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.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    vileman
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 579
    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
    VIP
    VIP

    Respeito às Regras 50%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1260
    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.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2099
    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  DamascenoJr. 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 13 vez(es)


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

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 579
    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 : 579
    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
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2099
    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  DamascenoJr. em 28/4/2019, 20:47

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

      Data/hora atual: 8/7/2020, 16:28