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


2 participantes

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

    avatar
    wmantovani
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 218
    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 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 : 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 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
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 218
    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 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 37 vez(es)
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : 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 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
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 218
    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 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 : 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 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: 28/3/2024, 11:30