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 parando

    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Loop parando Empty [Resolvido]Loop parando

    Mensagem  scandinavo 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
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  DamascenoJr. 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


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    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
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  scandinavo 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
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  scandinavo 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: 28/3/2024, 16:41