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


4 participantes

    [Resolvido]Percorrer tabela e atualizar campos em cada registro

    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  ilvecchio 6/11/2014, 19:37

    Buenas!
    Copiei o código que contou com a ajuda do Alexandre Neves, aqui no fórum, tentei adaptá-lo mas não consegui.
    O problema é o seguinte:
    1) Tenho uma Tabela (TabNomeArquivo) onde há um campo NomeArquivo e outros mais - Campo1, Campo2, Campo3 ... Campo6;
    2) O NomeArquivo tem informações que vão alimentar os Campos1 ... Campo6, separadas por underline ("_");
    3) Preciso ler todos os campos NomeArquivo, extrair as informações e colocar nos respectivos campos.

    A extração das informações está funcionando, há a separação das informações e elas vão para os campos corretamente. Mas os campos são alimentados, para todos os NomeArquivo, com as informações de um único NomeArquivo. Ou seja, lê todos os registros mas usa as informações de um só.
    Certamente, há um erro de loop, mas não enxergo.

    Eis o código:

    Function SeparaCampos()
     Dim VNomeArquivo As String
     Dim VPosicaoUnderline As Variant
     Dim i As Integer
     
    '-----------------------------------------------------------------------
    Dim db As DAO.DataBase
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("TabNomeArquivo")

     Do While Not rs.EOF
       VNomeArquivo = rs("NomeArquivo")
       
       VPosicaoUnderline = Split(VNomeArquivo , "_")
         
         For i = 0 To UBound(VPosicaoUnderline)
         
           Select Case i
             Case 0
                CurrentDb.Execute "TabNomeArquivo SET Campo1 = '" & VPosicaoUnderline(i) & "';"
             Case 1
                CurrentDb.Execute "TabNomeArquivo SET Campo2 = '" & VPosicaoUnderline(i) & "';"
             Case 2
                CurrentDb.Execute "TabNomeArquivo SET Campo3 = '" & VPosicaoUnderline(i) & "';"
             Case 3
                CurrentDb.Execute "TabNomeArquivo SET Campo4 = '" & VPosicaoUnderline(i) & "';"
             Case 4
                CurrentDb.Execute "TabNomeArquivo SET Campo5 = '" & VPosicaoUnderline(i) & "';"
             Case 5
                CurrentDb.Execute "TabNomeArquivo SET Campo6 = '" & VPosicaoUnderline(i) & "';"
           
             Case Else
           End Select
           
          i = i + 1
       

         Next
       
       rs.MoveNext
       
       Loop
     

    End Function
    Julio Lustosa
    Julio Lustosa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 23/02/2011

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Julio Lustosa 7/11/2014, 11:26

    Tem como postar um exemplo da seu projeto?
    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  ilvecchio 7/11/2014, 12:29

    A tabela deveria ser alimentada dessa forma:

    NomeArquivo................................................Campo1........Campo2........Campo3........Campo4........Campo5........Campo6
    Oficio_SP_SaoPaulo_001234_003_20141103.......Oficio............SP...............SaoPaulo.......001234........003.............20141103
    Memorando_BA_Salvador_001257_002_20141103....Memorando.........BA.......Salvador.........001257.........002......... 20141103
    Circular_SP_Diadema_001298_008_20141103........Circular.........SP........Diadema........001298.........008.........20141103
    OrdemServico_SP_SaoPaulo_001241_001_20140820.....OrdemServico.....SP.....SaoPaulo.....001241.....001.....20140820


    Mas fica assim:

    NomeArquivo................................................Campo1........Campo2........Campo3........Campo4........Campo5........Campo6
    Oficio_SP_SaoPaulo_001234_003_20141103.....OrdemServico.....SP.....SaoPaulo.....001241.....001.....20140820
    Memorando_BA_Salvador_001257_002_20141103.....OrdemServico.....SP.....SaoPaulo.....001241.....001.....20140820
    Circular_SP_Diadema_001298_008_20141103.....OrdemServico.....SP.....SaoPaulo.....001241.....001.....20140820
    OrdemServico_SP_SaoPaulo_001241_001_20140820.....OrdemServico.....SP.....SaoPaulo.....001241.....001.....20140820


    Veja que os campos são preenchidos com as informações do último registro da tabela.
    Lembrando que a primeira coluna já existe na tabela antes de executar o código. Dela saem os valores para as demais.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Noobezinho 7/11/2014, 12:43

    Luis

    Experimente adicionar a linha em vermelho no código:

    Function SeparaCampos()
    Dim VNomeArquivo As String
    Dim VPosicaoUnderline As Variant
    Dim i As Integer

    '-----------------------------------------------------------------------
    Dim db As DAO.DataBase
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("TabNomeArquivo")

    rs.movefirst ' coloca o ponteiro no primeiro registro da tabela

    Do While Not rs.EOF
      VNomeArquivo = rs("NomeArquivo")
     
      VPosicaoUnderline = Split(VNomeArquivo , "_")
       
       


    Abraços

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  ilvecchio 7/11/2014, 13:02

    Noob, coloquei e não adiantou. Nesse tempo alterei o For...Next para While.. Loop, mas deu na mesma; agora repete as informações do primeiro registro.


    rs.MoveFirst

    Do While Not rs.EOF
      VNomeArquivo = rs("NomeArquivo")
     
      VPosicaoUnderline = Split(VNomeArquivo , "_")
       
       ' For i = 0 To UBound(VPosicaoUnderline)
        Do While i <= UBound(VPosicaoUnderline)
       
          Select Case i
            Case 0
               CurrentDb.Execute "TabNomeArquivo SET Campo1 = '" & VPosicaoUnderline(i) & "';"
            Case 1
               CurrentDb.Execute "TabNomeArquivo SET Campo2 = '" & VPosicaoUnderline(i) & "';"
            Case 2
               CurrentDb.Execute "TabNomeArquivo SET Campo3 = '" & VPosicaoUnderline(i) & "';"
            Case 3
               CurrentDb.Execute "TabNomeArquivo SET Campo4 = '" & VPosicaoUnderline(i) & "';"
            Case 4
               CurrentDb.Execute "TabNomeArquivo SET Campo5 = '" & VPosicaoUnderline(i) & "';"
            Case 5
               CurrentDb.Execute "TabNomeArquivo SET Campo6 = '" & VPosicaoUnderline(i) & "';"
         
            Case Else
          End Select
         
         i = i + 1
     

        'Next
        Loop
     
      rs.MoveNext
     
      Loop
    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  ilvecchio 7/11/2014, 13:11

    Fiz um teste, saindo fora do segundo While e antes do rs.MoveNext, , ou seja, não indo para o próximo registro, mas vi que todos os registros foram preenchidos. Portanto há um erro de loop. Não está havendo uma subordinação do segundo While ao primeiro.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Noobezinho 7/11/2014, 13:14

    Luis

    Teste para ver se percorre todos os registros da tabela:

    Código:


    Function SeparaCampos()
     Dim VNomeArquivo As String
     Dim VPosicaoUnderline As Variant
     Dim i As Integer
     
    '-----------------------------------------------------------------------
    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("TabNomeArquivo")
    rs.MoveFirst
     Do While Not rs.EOF
       VNomeArquivo = rs("NomeArquivo")
      
       VPosicaoUnderline = Split(VNomeArquivo, "_")
      
       Debug.Print VPosicaoUnderline & vbCrLf  'irá exibir na janela de verificação imediata.
          
       rs.MoveNext
      
       Loop
      

    End Function

    Veja se exibe todos os registros da tabela na janela de verificação imediata no Visual basic (Crtl +G)

    Editando: Tivemos a mesma ideia é?  Razz

    Para desencargo de consciência, quantos registros tem nessa tabela?


    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Noobezinho 7/11/2014, 13:28

    Caso ainda não esteja funfando experimente:

    Luis - Clique aqui para expandir:

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Update

    Mensagem  Cláudio Más 7/11/2014, 15:06

    Não estaria faltando o Update?

    CurrentDb.Execute "Update TabNomeArquivo SET Campo1 = '" & VPosicaoUnderline(i) & "';"
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Noobezinho 7/11/2014, 15:21

    Olá Claudio

    Pelo que entendi, essa parte está funcionando, o que ele não está conseguindo, é
    navegar nos registros da tabela.

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  ilvecchio 7/11/2014, 16:06

    Caraca!
    Preocupei-me tanto com o código que esqueci do básico:

          CurrentDb.Execute "Update TabNomeArquivo SET Campo1 = '" & VPosicaoUnderline(i) & "' WHERE NomeArquivo = '" & VNomeArquivo& "';"

    e, também :

    Do While Not rs.EOF
     
      VNomeArquivo = rs("NomeArquivo")  
      VPosicaoUnderline = Split(VNomeArquivo, "_")
      i = 0 '>>> reiniciar o contador VPosicaoUnderline


    Cláudio Más, no meu código tem o update, falha minha quando postei. Bem observado.


    Obrigado a todos.

    Julio Lustosa
    Julio Lustosa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 23/02/2011

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Julio Lustosa 7/11/2014, 16:16

    Quantos registros na tabela tblNomeArquivo existem para serem atualizados?

    Você quer atualizar ou adicionar?
    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  ilvecchio 7/11/2014, 16:29

    Júlio, esta tabela é preenchida com o nome de arquivos existentes numa pasta. Esses arquivos são colocados lá diariamente. Então, duas vezes por semana uma rotina captura esses nomes e os adiciona à tabela (TabNomeArquivos, NomeArquivo). O código em questão separa as partes ("_") desse nome e os atualiza na própria tabela :Campo1 a Campo6.

    Em média, 150 a 200 registros por semana.
    Julio Lustosa
    Julio Lustosa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 23/02/2011

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Julio Lustosa 7/11/2014, 16:48

    Qual é o código que captura destes arquivos?
    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  ilvecchio 7/11/2014, 18:06

    Julio, o código que captura o nome na pasta está em outro aplicativo usado em outra área da empresa. Eu recebo a tabela com o nome, e acrescento os outros campos. Vou tentar conseguir o código e coloco aqui. Mas posso adiantar que ele foi pego aqui no fórum.
    Julio Lustosa
    Julio Lustosa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 23/02/2011

    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Julio Lustosa 10/11/2014, 14:07

    Olá.

    Na verdade não preciso do código. Só preciso verificar se está o seu procedimento está atualizado ou adicionando itens à tabela.

    Você não consegue enviar este projeto para nós não? Somente da tabela que quer atualizar, do código que está usando, formulários e a tabela de origem dos nomes que foram gerados pelo outro código.

    Conteúdo patrocinado


    [Resolvido]Percorrer tabela e atualizar campos em cada registro Empty Re: [Resolvido]Percorrer tabela e atualizar campos em cada registro

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 08:48