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]Loop alterar vários registros 000000/00 para 000000/0000

    avatar
    wmantovani
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  wmantovani em 29/9/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
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  Dilson em 30/9/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.
    avatar
    wmantovani
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  wmantovani em 30/9/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
    [Resolvido]Loop alterar vários registros 000000/00 para 000000/0000 AttachmentTBGESTAO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (620 Kb) Baixado 26 vez(es)
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  Dilson em 30/9/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 30/9/2014, 17:51, editado 2 vez(es)
    avatar
    wmantovani
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  wmantovani em 30/9/2014, 13:58

    Caro Dilson,

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


    Muito obrigado mesmo...
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  Dilson em 30/9/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!

    Conteúdo patrocinado

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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 16/6/2019, 21:59