MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


3 participantes

    [Resolvido]Inserção do Dígito "9"

    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 27/8/2013, 13:42

    Bom dia feras.
    Gostaria de saber se existe como eu inserir o dígito "9" nos números de telefones da minha tabela por um meio automatizado (macro, vba).
    Tentei criar um aqui, mas não sei a função que insere um digito no meio de uma já digitado, por exemplo:

    1381222222 - 13 9 81222222

    Alguem pode me indicar essa função, assim posso tentar terminar o que estou tentando e repassar aqui no fórum.
    Grato.

    Luiz Carlos Junior.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Alexandre Neves 27/8/2013, 15:26

    Boa tarde,
    Em que condições e onde o algarismo 9 deve ser incluído?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 27/8/2013, 15:49

    Fala Chumbrega!!!!

    Você poderia fazer uma concatenação....
    Pelo menos foi o q pensei de imediato....

    Você precisa carregar os dados que vai alterar....   num recordset ou vinculado....   enfim....

    P/ trabalhar com o dado, você cria uma variável e vai adicionando as partes nela....

    Exemplo >>>   NumeroDoTelefone = 0211191234567
    TelFinal as string
    TelFinal = ""   'Limpa a variável na inicialização
    TelFinal = "9" & right("NumeroDoTelefone", 8 )  'Neste momento a variável vale 991234567
    TelFinal = left("NumeroDoTelefone", len(NumeroDoTelefone) - 8 )  'Neste momento a variável vale 02111991234567

    Por fim, basta você fazer o update na tabela!!!!!

    Reporta p/ nós se valeu a pena, alguma resposta dos amigos!!!!!

    Desde já agradeço!!!!!!

    Abraço a todos!!!!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 27/8/2013, 19:15

    Fala Mestre Alexandre.
    O digito 9 deve ser colocado após o DDD, por exemplo:
    O número era 1381223344, onde o "13" é o DDD e o resto é o número, que ficaria assim após a inserção do digito 13981223344
    Deu pra entender?
    Grato.

    Fala Cris, então, quando vi seu exemplo achei irado, mas está dando errado. Ele não pega os números, mas sim as variáveis e sobrepõe os números.
    To tentando mexer e esfumaçando a cabeça, mas vai sair...hehehe
    Abrasss...
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 27/8/2013, 19:21

    Fala Chumbrega!!!!!

    Perdão meu amigo.....

    Esquecí um detalhe importante!!!!!
    hahahahahahahahha Embarassed Embarassed Embarassed Embarassed Embarassed Embarassed Embarassed Embarassed Embarassed Embarassed 


    Exemplo >>> NumeroDoTelefone = 0211191234567
    TelFinal as string
    TelFinal = "" 'Limpa a variável na inicialização
    TelFinal = "9" & right("NumeroDoTelefone", 8 ) 'Neste momento a variável vale 991234567
    TelFinal = left("NumeroDoTelefone", len(NumeroDoTelefone) - 8 ) & TelFinal 'Neste momento a variável vale 02111991234567


    Faltou concatenar o que você já tinha na variável com o complemento do telefone.....
    Agora deve funcionar 100%...

    Testa lá!!!!

    desculpe mais uma vez pela falta de atenção!!!!

    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 27/8/2013, 19:52

    Consegui juntando sua ideia com uma outra que percorre todos os campos que contem telefone e deu nisso:

    Private Sub CmdOK_Click()

    On Error GoTo TratareiErro

    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim Contador As Long
    Dim ContaOProgresso As Long
    Dim L, TelFinal, TelInicio, Tel, Tabela As String
    Dim cont As Integer

    Set Db = CurrentDb

    For cont = 1 To 4

           Set Rs = Db.OpenRecordset("Select * from tb_Alunos")
               If Len(Rs("TEL" & cont)) = 11 Then
                   Exit Sub
                   Else
                   Rs.MoveLast
                   
                   Contador = Rs.RecordCount
                   
                   Rs.MoveFirst
                   
                   SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
                   
                   For ContaOProgresso = 1 To Contador
                   
                   SysCmd acSysCmdUpdateMeter, ContaOProgresso
                   
                   TelInicio = left(Rs("TEL" & cont), 2)
                   TelFinal = right(Rs("TEL" & cont), 8)
                   Tel = TelInicio & "9" & TelFinal
                   Rs.Edit
                   Rs("TEL" & cont) = Tel
                   Rs.Update
                   Rs.MoveNext
               
                   Next ContaOProgresso
                   
               End If
           
    Next cont

    Rs.Close
    Db.Close

    SysCmd acSysCmdRemoveMeter

    MsgBox "OK, Total de: " & Contador & " registros", vbInformation, "Concluído"


    Exit_TratareiErro:
    Exit Sub

    TratareiErro:
    MsgBox "Ocorreu uma falha neste processamento." _
    & vbCrLf & "Trata-se do erro n°: " & err.Number _
    & vbCrLf & "Descrição: " & err.Description, vbCritical, "Erro inesperado"

    Exit Sub


    End Sub

    Porém, preciso que filtra para não inserir o digito "9" nos números que começam (depois do DDD) em "3" e nos campos em branco.
    Gostaria tb de uma ideia para inserir o nome da tabela em uma textbox e ao clicar do ok altera o nome da tabela no código.
    Alguma ideia?

    Abrasss!!!

    PS: esse código usei em um form simples com um botão ok e uma text box.

    A ideia do loop veio do Dilson Marcos, deste link: http://accessdoprogramador.forumeiros.com/t151-vba-loop-para-copiar-parte-de-string-de-uma-coluna-para-outra
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 27/8/2013, 21:09

    Fala Chumbrega!!!!

    Cara, o procedimento é este mesmo.... vc tem que fazer um loop p/ varrer sua tabela toda.... sem dó!!!!

    Só não entendi esse comentário que vc fez.....

    Tem como detalhar melhor?????

    Chumbrega escreveu:Porém, preciso que filtra para não inserir o digito "9" nos números que começam (depois do DDD) em "3" e nos campos em branco.
    Vamos resolvendo as pendencias por partes... é mais fácil!!!!!!

    Desde já agradeço...

    Abraço a todos!!!!!!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 27/8/2013, 22:29

    Os números que não são celular, geralmente começam com 3 e não necessitam do digito.
    Tendeu?

    Abrasss!!!
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 27/8/2013, 22:52

    Fala Chumbrega....

    Entendi sim.....

    Sinceramente, vc criar algo complexo demais só p/ fazer uma atualização de cadastro, vai levar muito tempo!!!!

    O que eu faria.....

    Neste bloco, eu colocaria um IF, p/ verificar o início do telefone...
    Seria mais fácil você verificar os números "8" e "9", que são os mais "populares" p/ celular.....
    Hoje em dia, tem celular começando até com "4"!!!!!
    Vai complicar demais.....

    Exemplo >>> NumeroDoTelefone = 0211191234567
    if mid("NumeroDoTelefone", len("NumeroDoTelefone") - 8, 1) = 8 OR mid("NumeroDoTelefone", len("NumeroDoTelefone") - 8, 1) = 8 then
        TelInicio = left(Rs("TEL" & cont), 2)
        TelFinal = right(Rs("TEL" & cont), 8 )
        Tel = TelInicio & "9" & TelFinal
        Rs.Edit
        Rs("TEL" & cont) = Tel
        Rs.Update
    end if
    Rs.MoveNext


    Este pedaço, em cima da sua lógica (loop)!!!!

    O que for muito diferente disso, eventualmente, você conseguiria analisar na mão (caso a caso) e tomar uma decisão.....

    Da uma olhada se eu não pisei na bola novamente, com o código!!!!

    Desde já agradeço...

    Abraço a todos!!!!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 27/8/2013, 23:02

    Era isso que não sabia fazer, usar o Mid com Len.
    Agora posso fazer uma linha onde ser começar com 3, sai do Sub.
    Vou testar amanhã e te aviso se deu certo.

    Abrasss!!!
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 28/8/2013, 15:25

    Beleza Chumbrega!!!!!

    Precisando, grita!!!!

    Desde já agradeço....

    Abraço a todos!!!!!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 28/8/2013, 19:57

    Fala Velhinho, blz?
    Então, nada feito.
    Não deu certo.
    O que acontece é o seguinte:

    Tenho 4 campos de telefones: TEL1, TEL2, TEL3, TEL4
    Tenho registros que não possuem mais de um telefone, e por isso alguns campos ficam vazios.
    Tenho metade dos telefones que são fixos começando com 3, o resto é celular(de 4 até 9)
    Quando clico no OK, ele insere o digito 9 na frente dos fixos e campos em branco tb, e não quero isso.
    Esses filtros que tentei e os que me passou só travam o código.

    Entendeu o filtro que quero?

    Abrasss!!!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Alexandre Neves 28/8/2013, 20:07

    Boa tarde,
    Ainda estou por perceber que tipos de números podem existir na tabela. Falou que o "13" é o DDD?
    Tente assim
    Currentdb.execute "UPDATE Tabela SET Tel1=Left(Tel1,2) & 9 & right(Tel1,Cool WHERE Not IsNull(Tel1)"
    Currentdb.execute "UPDATE Tabela SET Tel2=Left(Tel2,2) & 9 & right(Tel2,Cool WHERE Not IsNull(Tel2)"
    Currentdb.execute "UPDATE Tabela SET Tel3=Left(Tel3,2) & 9 & right(Tel3,Cool WHERE Not IsNull(Tel3)"
    Currentdb.execute "UPDATE Tabela SET Tel4=Left(Tel4,2) & 9 & right(Tel4,Cool WHERE Not IsNull(Tel4)"
    Se não funcionar, explique em que condições pretende fazer a actualização


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 28/8/2013, 20:49

    Fala Chumbrega!!!!

    Cara, a solução do Alexandre é bem bacana tb!!!!!
    Joga no código e vê o q rola!!!!

    Pensando em cima da sua lógica, eu faria assim >>>>

    Private Sub CmdOK_Click()
    Dim Db As DAO.Database
    Dim ContaCampo As Integer
    DIM stNomeCampo as string
    Dim Rs As DAO.Recordset
    Dim Contador As integer
    Dim ContaOProgresso As integer
    Dim TelFinal As String

    On Error GoTo TratareiErro
    Set Db = CurrentDb
    For ContaCampo = 1 To 4
    stNomeCampo = "TEL" & cont
    Set Rs = Db.OpenRecordset("SELECT " & stNomeCampo & " FROM tb_Alunos WHERE " & stNomeCampo & " is not null;") ' Aqui voce tira todos os campos nulos.
    rs.movelast 'Varre todo o recordset p/ verificar todos os registros carregados.
    Rs.MoveFirst
    Contador = Rs.RecordCount
    SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
    do while not Rs.EOF
    For ContaOProgresso = 1 To Contador
    SysCmd acSysCmdUpdateMeter, ContaOProgresso
    if mid(Rs.fields(0), len(Rs.fields(0)) - 8, 1) <> 3 then
    TelFinal = "" 'Limpa a variável na inicialização
    TelFinal = "9" & right(Rs.fields(0), 8 )
    TelFinal = left(Rs.fields(0), len(Rs.fields(0)) - 8 ) & TelFinal
    Rs.Edit
    Rs.fields(0) = TelFinal
    Rs.Update
    End If
    Rs.MoveNext
    Next ContaOProgresso
    loop
    Rs.close
    Next ContaCampo
    Rs.Close
    Db.Close
    SysCmd acSysCmdRemoveMeter
    MsgBox "OK, Total de: " & Contador & " registros", vbInformation, "Concluído"

    Exit_TratareiErro:
    Exit Sub

    TratareiErro:
    MsgBox "Ocorreu uma falha neste processamento." _
    & vbCrLf & "Trata-se do erro n°: " & err.Number _
    & vbCrLf & "Descrição: " & err.Description, vbCritical, "Erro inesperado"

    Exit Sub

    End Sub


    Eu fiz a parada rapidinho e acabei não testando!!!!
    joga no código tb e vê o q rola!!!!

    Qlqr coisa grita p/ nozes!!!!! Cool Cool Cool Cool Cool Cool Cool Cool Cool Cool 

    Desde já agradeço....

    Abraço a todos!!!!!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 13:32

    Fala Cris e Mestre Alexandre, blz?

    Então, do jeito do Cris funfou em partes, mas deu erros. Aí fiz umas modificações, usando o que o Mestre Alexandre fez e funcionou em partes.
    Não preenche mais os registros em branco, porém, ainda não consegui um que não insira nos registros que comecem com 2 e 3, que é o mais importante.
    Vou demonstrar como funcionam on números de telefone aqui no Brasil, para que o Mestre possa entender:

    Os celulares começam em 4, 5, 6, 7, 8, 9 - Nesses pode inserir.
    Os fixos começam em 2 e 3. Nesses não tem que inserir.

    Aguardo mais luzes de vcs companheiros...(Estamos quase lá...hehehe)

    Segue o código como ficou.
    Abrasss!!!

    Private Sub CmdOK_Click()

    Dim Db As DAO.Database
    Dim ContaCampo As Integer
    Dim Rs As DAO.Recordset
    Dim Contador As Integer
    Dim cont As Integer
    Dim TelFinal As String
    Dim stCampo As String

    On Error GoTo TratareiErro

    Set Db = CurrentDb

    For cont = 1 To 4

    stCampo = "TEL" & cont

    Set Rs = Db.OpenRecordset("Select * from tb_Alunos")
    Rs.MoveLast
    Rs.MoveFirst
    Contador = Rs.RecordCount
    SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
    Do While Not Rs.EOF
    For ContaOProgresso = 1 To Contador
    SysCmd acSysCmdUpdateMeter, ContaOProgresso
    Db.Execute "UPDATE tb_Alunos SET " & stCampo & "=Left(" & stCampo & ",2) & 9 &" _
    & "right(" & stCampo & ",Cool WHERE Not IsNull(" & stCampo & ") Or Len(" & stCampo & ") <> 11"
    Rs.MoveNext
    Next ContaOProgresso
    Loop
    Next cont
    Rs.Close
    Db.Close

    SysCmd acSysCmdRemoveMeter

    MsgBox "OK, Total de: " & Contador & " registros", vbInformation, "Concluído"

    Exit_TratareiErro:
    Exit Sub

    TratareiErro:
    MsgBox "Ocorreu uma falha neste processamento." _
    & vbCrLf & "Trata-se do erro n°: " & err.Number _
    & vbCrLf & "Descrição: " & err.Description, vbCritical, "Erro inesperado"

    Exit Sub

    End Sub
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 29/8/2013, 14:01

    Fala Chumbrega!!!!

    Devagar vamos chegar lá!!!!
    hahahahahahahhhaa


    Cara, se entendi direito, você precisa fazer um ajuste neste Update....

    tenta assim....

    Db.Execute "UPDATE tb_Alunos SET " & stCampo & "=Left(" & stCampo & ",2) & 9 &" _
    & "right(" & stCampo & ", 8 )WHERE ((Not IsNull(" & stCampo & ") Or Len(" & stCampo & ") <> 11 ) AND " & stCampo & " <> 2 ) OR ((Not IsNull(" & stCampo & ") Or Len(" & stCampo & ") <> 11 ) AND " & stCampo & " <> 3 )"


    Vamos ver se agora a parada engrena!!!!!

    hahahahahhahahaha

    Desde já agradeço...

    Abraço a todos!!!!!!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Alexandre Neves 29/8/2013, 14:10

    Boa tarde,
    Chumbrega era essa informação que faltava. Sem informações precisas, só se acerta por sorte.
    Currentdb.execute "UPDATE Tabela SET Tel1=Left(Tel1,2) & 9 & right(Tel1,Cool WHERE Not IsNull(Tel1) and Left(Tel1,1) IN ('4','5','6','7',8','9')"
    Currentdb.execute "UPDATE Tabela SET Tel2=Left(Tel2,2) & 9 & right(Tel2,Cool WHERE Not IsNull(Tel2) and Left(Tel2,1) IN ('4','5','6','7',8','9')"
    Currentdb.execute "UPDATE Tabela SET Tel3=Left(Tel3,2) & 9 & right(Tel3,Cool WHERE Not IsNull(Tel3) and Left(Tel3,1) IN ('4','5','6','7',8','9')"
    Currentdb.execute "UPDATE Tabela SET Tel4=Left(Tel4,2) & 9 & right(Tel4,Cool WHERE Not IsNull(Tel4) and Left(Tel4,1) IN ('4','5','6','7',8','9')"


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 15:58

    Cris, não engrenou...HAHAHA

    Mestre Alexandre, não filtrou os números e continuou inserindo o 9 nos números iniciados em 3 e 2.
    Segue o código como ficou para que me ajude a encontrar o erro.
    Números como 1333166666 ficaram 13933166666 e não devem ter este digito 9 na atualização.

    Ta esfumaçando a cuca...hehehe

    Private Sub CmdOK_Click()

    Dim Db As DAO.Database
    Dim ContaCampo As Integer
    Dim Rs As DAO.Recordset
    Dim Contador As Integer
    Dim cont As Integer
    Dim TelFinal As String
    Dim stCampo As String

    On Error GoTo TratareiErro

    Set Db = CurrentDb

    For cont = 1 To 4

    stCampo = "TEL" & cont

    Set Rs = Db.OpenRecordset("Select * from tb_Alunos")
    Rs.MoveLast
    Rs.MoveFirst
    Contador = Rs.RecordCount
    SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
    Do While Not Rs.EOF
    For ContaOProgresso = 1 To Contador
    SysCmd acSysCmdUpdateMeter, ContaOProgresso
    Db.Execute "UPDATE tb_Alunos SET " & stCampo & "=Left(" & stCampo & ",2) & 9 &" _
    & "right(" & stCampo & ",8) WHERE Not IsNull(" & stCampo & ") Or Left(" & stCampo & ",1) IN ('4','5','6','7','8','9')"
    Rs.MoveNext
    Next ContaOProgresso
    Loop
    Next cont
    Rs.Close
    Db.Close

    SysCmd acSysCmdRemoveMeter

    MsgBox "OK, Total de: " & Contador & " registros", vbInformation, "Concluído"

    Exit_TratareiErro:
    Exit Sub

    TratareiErro:
    MsgBox "Ocorreu uma falha neste processamento." _
    & vbCrLf & "Trata-se do erro n°: " & err.Number _
    & vbCrLf & "Descrição: " & err.Description, vbCritical, "Erro inesperado"

    Exit Sub

    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Alexandre Neves 29/8/2013, 16:31

    Estranho que não funcione
    Pode disponibilizar a tabela?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 29/8/2013, 17:28

    Fala chumbrega....

    Se entendi direito, seu Update está bagunçando aqui......

    Segundo seu exemplo.... >>> Números como 1333166666 ficaram 13933166666 e não devem ter este digito 9 na atualização

    1 - WHERE Not IsNull(" & stCampo & ") Or Left(" & stCampo & ",1) IN ('4','5','6','7','8','9')"

    A meu ver, vc está levando em consideração apenas 1 campo da esquerda....
    Com isso, seu resultado seria sempre "1" (no seu exemplo)!!!!!

    Eu faria da seguinte forma.....

    WHERE Not IsNull(" & stCampo & ") Or mid(" & stCampo & ", 3, 1) IN ('4','5','6','7','8','9')"

    Dessa forma, vc inicia a verificação do terceiro digito da expressão!!!!
    No seu exemplo, apareceria o "3" p/ verificação!!!!!

    Será q engrenou????

    hahahahahahahahhaahahhahahaha

    Desde já agradeço....

    Abraço a todos!!!!!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 17:37

    Segue.
    É só abrir o form e clicar no OK para testar.
    Veja que ele insere o digito nos começados em 3.

    Abrasss!!!
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 29/8/2013, 17:43

    Chumbrega....

    Mesmo depois dessa mudança que eu sugeri, está atualizando errado??????


    Desde já agradeço...

    Abraço a todos!!!!!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Alexandre Neves 29/8/2013, 17:56

    Deve haver engano.
    Todos os números começam por 1


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 19:01

    Sim Mestre.
    Todos estão iniciando com o DDD, que aqui no estado de São Paulo são: 11, 12, 13, 14, 15, 16, 17, 18 19.
    Devido ao grande número de celulares, a Anatel (Agência reguladora do Sistema de Telefonia) decidiu implantar o Digito 9 na frente de todos os números do Estado.
    O que quero Mestre, é que filtre à partir do 3 dígito de o número possuir 10 caracteres, pois os inciados com DDD 11, já estavam com este dígito faz um tempo.
    Complicado né?
    Brasil!
    hehehe

    Entendeu minha necessidade?

    Grato desde já.
    Abrasss!!!

    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 19:03

    Cris, tentei desse modo e filtrou alguns e pulou outros. Estranho, não?
    Tinha feito isso antes de ver tua ideia, pensamos igual, porém não funfou.
    Ta a 200 minha cabeça...HAHAHA
    Mas qdo estiver pronto, pode facilitar pra muita gente a atualização dos BD.
    Vamos na luta!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 19:11

    Yeahhhhh!!!cheers cheers cheers cheers cheers cheers 

    Agora foi!!!

    Valeu pela ajuda Cris e Mestre Alexandre...
    Usando ideias dos 2 saiu o que queria.
    Agora quem quiser usar, é só copiar o código e mudar o nome da Tabela e dos campos.

    Ficou assim o código:

    Private Sub CmdOK_Click()

    Dim Db As DAO.Database
    Dim ContaCampo As Integer
    Dim Rs As DAO.Recordset
    Dim Contador As Integer
    Dim cont As Integer
    Dim TelFinal As String
    Dim stCampo As String
    Dim verifica As Variant

    On Error GoTo TratareiErro

    Set Db = CurrentDb

    For cont = 1 To 4

    stCampo = "TEL" & cont

    Set Rs = Db.OpenRecordset("Select * from tb_Alunos")
    Rs.MoveLast
    Rs.MoveFirst
    Contador = Rs.RecordCount
    SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
    Do While Not Rs.EOF
    For ContaOProgresso = 1 To Contador
    SysCmd acSysCmdUpdateMeter, ContaOProgresso
    Db.Execute "UPDATE tb_Alunos SET " & stCampo & "=Left(" & stCampo & ",2) & 9 &" _
    & "right(" & stCampo & ",Cool WHERE Not IsNull(" & stCampo & ") And Mid(" & stCampo & ", 3, 1) Not IN ('2','3')"
    Rs.MoveNext
    Next ContaOProgresso
    Loop
    Next cont
    Rs.Close
    Db.Close

    SysCmd acSysCmdRemoveMeter

    verifica = MsgBox("Total de: " & Contador & " registros", vbInformation + vbOKOnly, "Concluído")
    If verifica = vbOK Then DoCmd.Close

    Exit_TratareiErro:
    Exit Sub

    TratareiErro:
    MsgBox "Ocorreu uma falha neste processamento." _
    & vbCrLf & "Trata-se do erro n°: " & err.Number _
    & vbCrLf & "Descrição: " & err.Description, vbCritical, "Erro inesperado"

    Exit Sub

    End Sub

    Deus abençoe a todos!

    NoiX!!! Valeu!!!lol!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 19:16

    Ah, se quiserem me ajudar nas eternas dúvidas que postei e nada até agora, agradeço...hehehe
    Abrasss!!!

    http://maximoaccess.forumeiros.com/t13763-preenchimento-de-faltas-em-cartao-de-ponto-via-form

    http://maximoaccess.forumeiros.com/t12859-seletor-de-registros-nao-sequenciais
    avatar
    CrisMaleta
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    Registrado : 20/08/2013

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  CrisMaleta 29/8/2013, 19:19

    fala chumbrega!!!!!!

    hahahahahahahahahaa cheers cheers cheers 

    Chumbrega escreveu:Ta a 200 minha cabeça...HAHAHA
    Faltava velocidade!!!! esse foi o segredo!!!!

    hahahahahahahahahahahahaha

    Bora pra próxima bomba!!!!!

    Desde já agradeço...

    Abraço a todos!!!!!
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 19:40

    Boa...HAHAHA
    As próximas tão aí em cima nos links...hehehe

    Abrasss!!!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Alexandre Neves 29/8/2013, 20:12

    A minha primeira pergunta não foi respondida acertivamente. O problema continua a ser não descrever convenientemente o que pretende.
    falou em começar por X , afinal era x no 3º dígito. Se tivesse dito isso, bastava
    Currentdb.execute "UPDATE Tabela SET Tel1=Left(Tel1,2) & 9 & right(Tel1,Cool WHERE Not IsNull(Tel1) and Mid(Tel1,3,1) IN ('4','5','6','7',8','9')"
    Currentdb.execute "UPDATE Tabela SET Tel2=Left(Tel2,2) & 9 & right(Tel2,Cool WHERE Not IsNull(Tel2) and Left(Tel2,3,1) IN ('4','5','6','7',8','9')"
    Currentdb.execute "UPDATE Tabela SET Tel3=Left(Tel3,2) & 9 & right(Tel3,Cool WHERE Not IsNull(Tel3) and Left(Tel3,3,1) IN ('4','5','6','7',8','9')"
    Currentdb.execute "UPDATE Tabela SET Tel4=Left(Tel4,2) & 9 & right(Tel4,Cool WHERE Not IsNull(Tel4) and Left(Tel4,3,1) IN ('4','5','6','7',8','9')"


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Luiz Carlos Junior 29/8/2013, 20:22

    Desculpe Mestre.
    Falha minha.

    Mas mesmo assim conseguimos.

    Muito grato!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Alexandre Neves 29/8/2013, 20:41

    Ainda bem que ficou resolvido, mas lembre-se sempre do SQL. Se for possível trabalhar em SQL é muito melhor, mais rápido e mais intuitivo


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Conteúdo patrocinado


    [Resolvido]Inserção do Dígito "9" Empty Re: [Resolvido]Inserção do Dígito "9"

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 12:11