MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000

    Compartilhe

    wmantovani
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 99
    Registrado : 06/09/2011

    [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000

    Mensagem  wmantovani em Seg 29 Set 2014, 23:42

    Boa noite pessoal, tenho uma tabela com mais de 100.000 registros onde tenho o campo chamado PROCESSO, é númerico longo com a seguinte formatação Inteiro longo, formato: 00000\/00, mascara: !999999/99;0;, O que vem depois da barra "/" é correspondente ao ano, preciso converter os registros existente em ano com 4 digitos, eu tinha esse exemplo no antigo expertaccess, mas infelizmente nao existe mais..

    grato

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000

    Mensagem  Dilson em Ter 30 Set 2014, 03:32

    Mude:
    Formato para: 00000\/0000
    Mascara para: !999999/9999;0;


    Ao clicar de um botão:

    Dim rs As Recordset
    Dim qNR, qANO2, qANO4 As String
    Dim qRegistros As Long
    Dim qContador As Long
    Set rs = CurrentDb.OpenRecordset("SuaTabela")
    rs.MoveLast
    rs.MoveFirst
    qRegistros = rs.RecordCount
    For qContador = 1 To qRegistros
       qNR = Left(rs("SeuCampoProcesso"), Len(rs("SeuCampoProcesso")) - 2)
       qANO2 = "01/01/" & Right(rs("SeuCampoProcesso"), 2)
       qANO4 = Format(qANO2, "yyyy")
       rs.Edit
          rs("SeuCampoProcesso") = CLng(qNR & qANO4)
       rs.Update
     rs.MoveNext
    Next qContador
    rs.Close


    Faça um backup do seu projeto. Atente que o código deve ser acionado apenas uma vez, pois por uma segunda vez os resultados serão outros.


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    wmantovani
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 99
    Registrado : 06/09/2011

    Re: [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000

    Mensagem  wmantovani em Ter 30 Set 2014, 12:46

    Caro Dilson, primeiramente bom dia,


    Postei o banco para que voce possa dar uma olhada, pois aqui ao rodar o código deu erro de execução 6, e nao consegui resolver o problema, o BD esta em access 2003, se puder dar uma olhada agradeço,

    Postei somente uma parte dos registros pois ia ficar muito pesado.


    Grato
    Anexos
    TBGESTAO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (620 Kb) Baixado 23 vez(es)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000

    Mensagem  Dilson em Ter 30 Set 2014, 13:51

    Esse erro acontece porque causa conflito nas operações de tipos de dados diferentes, erros de conversão na hora que o algoritmo está percorrendo os registros.

    Faça assim:

    Mude o tipo de dado do campo PROCESSO de Inteiro longo para Duplo e use novamente o código que modifiquei só os tipos e conversões:

    Dim rs As Recordset
    Dim qNR As Long
    Dim qANO2 As String
    Dim qANO4 As Long
    Dim qRegistros As Long
    Dim qContador As Long
    Set rs = CurrentDb.OpenRecordset("CONTROLDOCS")
    rs.MoveLast
    rs.MoveFirst
    qRegistros = rs.RecordCount
     For qContador = 1 To qRegistros
        qNR = Left(rs("PROCESSO"), Len(rs("PROCESSO")) - 2)
        qANO2 = "01/01/" & Right(rs("PROCESSO"), 2)
        qANO4 = CLng(Format(qANO2, "yyyy"))
        rs.Edit
           rs("PROCESSO") = qNR & qANO4
        rs.Update
      rs.MoveNext
     Next qContador
    rs.Close


    Última edição por Dilson em Ter 30 Set 2014, 17:51, editado 2 vez(es)


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    wmantovani
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 99
    Registrado : 06/09/2011

    Re: [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000

    Mensagem  wmantovani em Ter 30 Set 2014, 13:58

    Caro Dilson,

    Parabéns, deu certo agora,,, você salvou minha pele,


    Muito obrigado mesmo...

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000

    Mensagem  Dilson em Ter 30 Set 2014, 17:46

    De nada, disponha.

    Obs: Mudei o titulo um pouquinho para facilitar a ferramenta de buscas do fórum.

    Até a próxima!


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

      Data/hora atual: Dom 04 Dez 2016, 01:53