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


3 participantes

    [Resolvido]Executar Loop dentro de outro Loop

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Executar Loop dentro de outro Loop Empty Executar Loop dentro de outro Loop

    Mensagem  rgondim 27/8/2012, 01:02

    Olá todos!

    Tenho um problema com a execução de um Loop dentro de outro Loop.
    O primeiro Loop percorre um Recordset (Rs1). O segundo Loop também percorre outro Recordset (Rs2).
    Ao encontrar o primeiro registro em Rs1, o segundo Loop é executado para somar valores de um campo através do contador i.
    O problema: o segundo Loop é executado apenas uma vez, quando o primeiro Loop é dispado e encontra o registro inicial de Rs1. Quando o Loop 1 vai para o segundo registro de Rs1, o Loop 2 não é mais executado.

    O código está assim:
    Código:
    j = 0
    Do While Not rs1.EOF
                i = 0
                    Do While Not rs2.EOF
                        If Format(datAfIni, "mm/yyyy") = Format(rs1!Competencia, "mm/yyyy") Then
                            If Format(datAfIni, "mm/yyyy") = Format(datAfFim, "mm/yyyy") Then
                                intDAfast = Day(datAfFim) - Day(datAfIni) + 1
                            Else
                                intDAfast = Day(DateSerial(Year(datAfIni), Month(datAfIni) + 1, 0)) - Day(datAfIni) + 1
                            End If
                        ElseIf Format(datAfFim, "mm/yyyy") = Format(rs1!Competencia, "mm/yyyy") Then
                            intDAfast = Day(datAfFim)
                        Else
                            intDAfast = 0
                        End If
                        i = i + intDAfast
                        rs2.MoveNext
                    Loop
                intDias = IIf(rs1!Cdias - i >= 15, 1, 0)
                j = j + intDias
                rs1.MoveNext
            Loop
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8443
    Registrado : 05/11/2009

    [Resolvido]Executar Loop dentro de outro Loop Empty Re: [Resolvido]Executar Loop dentro de outro Loop

    Mensagem  Alexandre Neves 27/8/2012, 09:35

    Bom dia, rgondim
    Código:
    j = 0
    Do While Not rs1.EOF
                i = 0
                    rs2.MoveFirst
                    Do While Not rs2.EOF
                        If Format(datAfIni, "mm/yyyy") = Format(rs1!Competencia, "mm/yyyy") Then
                            If Format(datAfIni, "mm/yyyy") = Format(datAfFim, "mm/yyyy") Then
                                intDAfast = Day(datAfFim) - Day(datAfIni) + 1
                            Else
                                intDAfast = Day(DateSerial(Year(datAfIni), Month(datAfIni) + 1, 0)) - Day(datAfIni) + 1
                            End If
                        ElseIf Format(datAfFim, "mm/yyyy") = Format(rs1!Competencia, "mm/yyyy") Then
                            intDAfast = Day(datAfFim)
                        Else
                            intDAfast = 0
                        End If
                        i = i + intDAfast
                        rs2.MoveNext
                    Loop
                intDias = IIf(rs1!Cdias - i >= 15, 1, 0)
                j = j + intDias
                rs1.MoveNext
            Loop


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    eddieddi gosta desta mensagem

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Executar Loop dentro de outro Loop Empty Re: [Resolvido]Executar Loop dentro de outro Loop

    Mensagem  rgondim 30/8/2012, 03:26

    Funcionou.
    Também consegui setando rs2 dentro do 1º loop.

    Obrigado.
    avatar
    eddieddi
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 12/04/2013

    [Resolvido]Executar Loop dentro de outro Loop Empty Re: [Resolvido]Executar Loop dentro de outro Loop

    Mensagem  eddieddi 2/12/2023, 00:23

    em 2023 (14 anos após essa publicação) fui ler, e achei nesse tópico a resposta que precisava, ou seja, as respostas são úteis por décadas, Parabéns ao MaximoAccess.

    2 Loop's (1 dentro do outro) funcionou apenas acrescentando o "rs2.MovieFirst" (ir para o primeiro registro do segundo loop)

    Conteúdo patrocinado


    [Resolvido]Executar Loop dentro de outro Loop Empty Re: [Resolvido]Executar Loop dentro de outro Loop

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 01:52