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 parando

    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

    [Resolvido]Loop parando Empty [Resolvido]Loop parando

    Mensagem  scandinavo em 14/8/2019, 19:21

    Estou ajudando um amigo aqui do fórum mas dei uma enroscada em um código


    Fiz (Adaptei) um codigo que nao esta funcionando corretamente o LOOP
    sao 3 recordset apos inserir os dados do primeiro codigo o loop para

    no formulario F06_CasosXInvestigados coloquei um botão inserir
    para percorrer a consulta "csEvidencias" e inserir os dados na tabela "T061_Evidencias"


           Dim rs As dao.Recordset
           Dim rst As dao.Recordset 'declaro a variável que receberá os registros da tabela origem
           Dim rst2 As dao.Recordset 'declaro a variável que receberá os registros da tabela destino
               
           Set db = CurrentDb
           
           Set rs = db.OpenRecordset("Select * from T06_Investigados where IDOperacao =" & Me.IDOperacao & "")
           Set rst = db.OpenRecordset("Select * from csEvidencias where NomePessoa ='" & rs!NomeInvestigado & "'")
           Set rst2 = db.OpenRecordset("T061_Evidencias")
           
           Do While Not rst.EOF
           

           rst2.AddNew
           rst2("IDInvestigadoLAF") = rs!CodInvestigado 'Apos inserir os dados do primeiro cod o LOOP para
           rst2("AparelhoDescricao") = rst!MaterialApreendido
           rst2("Modelo") = rst!Complemento

           rst2.Update
           
         
           rst.MoveNext
           
           Loop
         
           
           MsgBox ("Evidencias importadas")
           
           rs.Close 'fecho a consulta
           Set rs = Nothing 'e a descarrego da memória
           rst.Close 'fecho a consulta
           Set rst = Nothing 'e a descarrego da memória
           rst2.Close 'fecho a tabela
           Set rst2 = Nothing 'e a descarrego da memória


    Desde já agradeço pela atenção
    Anexos
    [Resolvido]Loop parando AttachmentFMA.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (611 Kb) Baixado 2 vez(es)
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 895
    Registrado : 22/11/2016

    [Resolvido]Loop parando Empty Re: [Resolvido]Loop parando

    Mensagem  IvanJr. em 14/8/2019, 21:21

    Abri o formulário e cliquei em inserir e o código fez o que devia fazer, isto é, fez um loop em todos os registros do objeto rst (Do While Not rst.EOF).

    Não é isso? Ou o que você deseja é um loop dentro de um loop (para cada registro de rs fazer um loop em rst)?

    Se  for, seria assim

    Código:
    While Not rs.EOF
            
                rst.MoveFirst
            
                While Not rst.EOF
                
                    rst2.AddNew
                        rst2("IDInvestigadoLAF") = rs!CodInvestigado
                        rst2("AparelhoDescricao") = rst!MaterialApreendido
                        rst2("Modelo") = rst!Complemento
                    rst2.Update
            
                    rst.MoveNext
                    
                Wend

                rs.MoveNext
            
            Wend


    .................................................................................
    Sempre tente entender o código, não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

    [Resolvido]Loop parando Empty Re: [Resolvido]Loop parando

    Mensagem  scandinavo em 15/8/2019, 13:41

    Ola
    isto mesmo para cada registro de rs fazer um loop em rst e adicionar os itens na rst2

    mas agora o codigo adiciona as evidencias em ( rst2) para cada investigado respeitando o codInvestigado na tabela ( rs ) ("T061_Evidencias")
    mas esta adicionando sempre os mesmos itens para todos. (As evidencias do primeiro investigado)

    o rst.MoveNext nao esta indo para o proximo onde rst = NomePessoa ='" & rs!NomeInvestigado "'"



    Valeu pela ajuda
    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

    [Resolvido]Loop parando Empty Re: [Resolvido]Loop parando

    Mensagem  scandinavo em 16/8/2019, 13:39

    IvanJr usei uma parte do seu código e uma outra parte de um código que eu tinha de Fabio Paes e funcionou


    Dim rs As DAO.Recordset 'declaro a variável
    Dim rst As DAO.Recordset 'declaro a variável
    Dim rst2 As DAO.Recordset 'declaro a variável

    Set DB = CurrentDb
    'Abre a tabela T06_Investigados e pego todos os investigado de acordo com o Id Operacao da cmbox
    Set rs = DB.OpenRecordset("Select * from T06_Investigados where IDOperacao =" & Me.IDOperacao & "")
    'Repetirei Até que não haja mais registros
    Do While Not rs.EOF
    'Abre a consulta csEvidencias de acordo com o nome da rs ja aberta (T06_Investigados) e de acordo com o Id Operacao da cmbox
    Set rst = DB.OpenRecordset("Select * from csEvidencias where NomePessoa ='" & rs!NomeInvestigado & "' and IDOperacao =" & Me.IDOperacao & "")
    'Começa no inicio
    rst.MoveFirst
    'Repetirei Até que não haja mais registros na consulta
    Do While Not rst.EOF
    'Abre a tabela T061_Evidencias
    Set rst2 = DB.OpenRecordset("T061_Evidencias")
    'Adicionar os novos dados
    rst2.AddNew
    rst2("IDInvestigadoLAF") = rs!CodInvestigado 'Adiciona o codInvestigado para fazer a vinculação entre as duas tabelas T06_Investigados e a T061_Evidencias
    rst2("AparelhoDescricao") = rst!MaterialApreendido 'Adiciona os dados referente a evidencia
    rst2("Modelo") = rst!Complemento 'Adiciona os dados referente a evidencia
    rst2.Update
    'Vai para o proximo registro da rst (consulta csEvidencias)
    rst.MoveNext

    Loop
    'Vai para o proximo registro da rs (tabela T06_Investigados)
    rs.MoveNext

    Loop
    'Emite mensagem
    MsgBox ("Evidencias importadas"), vbInformation, "Maximos access 2019"

    rs.Close 'fecho a consulta
    Set rs = Nothing 'e a descarrego da memória
    rst.Close 'fecho a consulta
    Set rst = Nothing 'e a descarrego da memória
    rst2.Close 'fecho a tabela
    Set rst2 = Nothing 'e a descarrego da memória

    Conteúdo patrocinado

    [Resolvido]Loop parando Empty Re: [Resolvido]Loop parando

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 17/9/2019, 16:11