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

    [Resolvido]DAO. RecordSet

    avatar
    _Line33_
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 10/09/2018

    [Resolvido]DAO. RecordSet Empty [Resolvido]DAO. RecordSet

    Mensagem  _Line33_ 6/3/2019, 20:03

    Fala Galera

    Seguinte, estou usando o metodo DAO.Recordset com o Loop
    Más não estou tendo sucesso

    Vejam só.
                                                                       
    Tenho 3 registros. (TABELA  Carteira Preventiva)
    Atividade - Nome - Data Programada - Data Final - Contagem Data - Periodicidade                    (As ATV vem da tabela Atividade Manutenção Preventiva)
      010     -  ATV01 -   06/03/2019     - 26/03/2019 -       20         -    1
      020     -  ATV02 -   06/03/2019     - 26/03/2019 -       20         -    2
      030     -  ATV03 -   06/03/2019     - 26/03/2019 -       20         -    3

    A *data final* - *data programada* gera uma contagem de 20 dias ainda.(Calculado automaticamente)
    Se você notar tenho a periodicidade ali de cada atividade, e oque ela significa?

    a atividade 010, a cada 1 dia ela deve aparecer de novo.
    a atividade 020, a cada 2 dias ela deve aparecer de novo.
    a atividade 030, a cada 3 dias ela deve aparecer de novo.



    Alguem tem alguma ideia?
    Com o código que estou usando, ele está pegando só a primeira atividade e dando erro de bloco with, variável não definida no rs3.
    vou deixar meu código aqui em baixo para qualquer duvida.

    Olhá como está o meu código.

    Dim DB As Database
    Dim rs As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim rs3 As DAO.Recordset

    Set DB = CurrentDb()
    Set rs = DB.OpenRecordset("SELECT * FROM [Atividades Manutenção Preventiva] WHERE [Periodicidade] < " & Me.txt_somadatas & " ")
    Set rs2 = DB.OpenRecordset("SELECT * FROM [Carteira De Preventiva]")

    Do While Not rs.EOF
       rs2.AddNew
           rs2![Código Atividade] = rs![Código]
           rs2![Parte a Verificar] = rs![Parte a Verificar]
           rs2![Descrição Do Serviço] = rs![Descrição Do Serviço]
           rs2![Periodicidade] = rs![Periodicidade]
           rs2![Tempo Necessário] = rs![Tempo Necessário]
           rs2![Instrução De Trabalho] = rs![Instrução De Trabalho]
           rs2![Material Necessário] = rs![Material Necessário]
           rs2![Observações De Segurança] = rs![Observações De Segurança]
           rs2![Equipamento Pai] = rs![Equipamento Pai]
           rs2![Plano De Manutenção] = rs![Plano De Manutenção]
           rs2![Centro De Custo] = rs![Centro De Custo]
           rs2![Data De Abertura] = Me.txt_datahoje.Value
           rs2![Data Programada] = Me.txt_datahoje.Value + rs![Periodicidade]
           rs2![Data Fim Plano] = Me.txt_diafim.Value
           rs2![CNTG Datas] = Me.txt_diafim.Value - (Me.txt_datahoje.Value + rs![Periodicidade])
           rs2.Update
           rs2.Requery
               Set rs3 = DB.OpenRecordset("SELECT * FROM [Carteira De Preventiva] WHERE [CNTG Datas] < " & rs3![Periodicidade] & "")
               Do While Not rs3.EOF
                   rs2.AddNew
                   rs2![Código Atividade] = rs![Código]
                   rs2![Parte a Verificar] = rs![Parte a Verificar]
                   rs2![Descrição Do Serviço] = rs![Descrição Do Serviço]
                   rs2![Periodicidade] = rs![Periodicidade]
                   rs2![Tempo Necessário] = rs![Tempo Necessário]
                   rs2![Instrução De Trabalho] = rs![Instrução De Trabalho]
                   rs2![Material Necessário] = rs![Material Necessário]
                   rs2![Observações De Segurança] = rs![Observações De Segurança]
                   rs2![Equipamento Pai] = rs![Equipamento Pai]
                   rs2![Plano De Manutenção] = rs![Plano De Manutenção]
                   rs2![Centro De Custo] = rs![Centro De Custo]
                   rs2![Data De Abertura] = Me.txt_datahoje.Value
                   rs2![Data Programada] = rs3![Data Programada] + rs![Periodicidade]
                   rs2![Data Fim Plano] = Me.txt_diafim.Value
                   rs2![CNTG Datas] = Me.txt_diafim.Value - (Me.txt_datahoje.Value + rs![Periodicidade])
                   rs2.Update
                   rs3.MoveNext
                   Loop
    rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    rs2.Close
    Set rs2 = Nothing
    rs3.Close
    Set rs3 = Nothing
    DB.Close
    Set DB = Nothing
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10614
    Registrado : 04/11/2009

    [Resolvido]DAO. RecordSet Empty Re: [Resolvido]DAO. RecordSet

    Mensagem  JPaulo 7/3/2019, 13:19

    Olá;

    Deve ser porque você está a abrir um recordset rs3 onde a clausula WHERE é o rs3!Periodicidade, deve ser rs2!Periodicidade

    Código:
    Set rs3 = DB.OpenRecordset("SELECT * FROM [Carteira De Preventiva] WHERE [CNTG Datas] < " & rs2![Periodicidade] & "")


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]DAO. RecordSet Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]DAO. RecordSet Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]DAO. RecordSet Folder_announce_new Instruções SQL como utilizar...
    avatar
    _Line33_
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 10/09/2018

    [Resolvido]DAO. RecordSet Empty Re: [Resolvido]DAO. RecordSet

    Mensagem  _Line33_ 7/3/2019, 16:18

    J Paulo.

    Eu tinha feito isso, agora ele parece que não respeita o segundo loop.
    ele não da o erro, mais tambem não muda nada.

    avatar
    _Line33_
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 10/09/2018

    [Resolvido]DAO. RecordSet Empty Re: [Resolvido]DAO. RecordSet

    Mensagem  _Line33_ 7/3/2019, 17:51

    Segue o código para o problema.

    Dim DB As Database
    Dim rs As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim rs3 As DAO.Recordset

    Set DB = CurrentDb()
    Set rs = DB.OpenRecordset("SELECT * FROM [Atividades Manutenção Preventiva] WHERE [Periodicidade] < " & Me.txt_somadatas & " ")
    Set rs2 = DB.OpenRecordset("SELECT * FROM [Carteira De Preventiva]")

    Do While Not rs.EOF
    rs2.AddNew
    rs2![Código Atividade] = rs![Código]
    rs2![Parte a Verificar] = rs![Parte a Verificar]
    rs2![Descrição Do Serviço] = rs![Descrição Do Serviço]
    rs2![Periodicidade] = rs![Periodicidade]
    rs2![Tempo Necessário] = rs![Tempo Necessário]
    rs2![Instrução De Trabalho] = rs![Instrução De Trabalho]
    rs2![Material Necessário] = rs![Material Necessário]
    rs2![Observações De Segurança] = rs![Observações De Segurança]
    rs2![Equipamento Pai] = rs![Equipamento Pai]
    rs2![Plano De Manutenção] = rs![Plano De Manutenção]
    rs2![Centro De Custo] = rs![Centro De Custo]
    rs2![Data De Abertura] = Me.txt_datahoje.Value
    rs2![Data Programada] = Me.txt_datahoje.Value + rs![Periodicidade]
    rs2![Data Fim Plano] = Me.txt_diafim.Value
    rs2![CNTG Datas] = Me.txt_diafim.Value - (Me.txt_datahoje.Value + rs![Periodicidade])
    rs2.Update
    rs2.Requery
    rs.MoveNext
    Loop
    Set rs3 = DB.OpenRecordset("SELECT * FROM [Carteira De Preventiva] WHERE [CNTG Datas] > " & rs2![Periodicidade] & "")
    Do While Not rs3.EOF
    rs2.AddNew
    rs2![Código Atividade] = rs3![Código Atividade]
    rs2![Parte a Verificar] = rs3![Parte a Verificar]
    rs2![Descrição Do Serviço] = rs3![Descrição Do Serviço]
    rs2![Periodicidade] = rs3![Periodicidade]
    rs2![Tempo Necessário] = rs3![Tempo Necessário]
    rs2![Instrução De Trabalho] = rs3![Instrução De Trabalho]
    rs2![Material Necessário] = rs3![Material Necessário]
    rs2![Observações De Segurança] = rs3![Observações De Segurança]
    rs2![Equipamento Pai] = rs3![Equipamento Pai]
    rs2![Plano De Manutenção] = rs3![Plano De Manutenção]
    rs2![Centro De Custo] = rs3![Centro De Custo]
    rs2![Data De Abertura] = Me.txt_datahoje.Value
    rs2![Data Programada] = rs3![Data Programada] + rs3![Periodicidade]
    rs2![Data Fim Plano] = Me.txt_diafim.Value
    rs2![CNTG Datas] = Me.txt_diafim.Value - (rs3![Data Programada] + rs3![Periodicidade])
    rs2.Update
    rs3.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    rs2.Close
    Set rs2 = Nothing
    DB.Close
    Set DB = Nothing


    End Sub

      Data/hora atual: 25/7/2021, 03:54