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]DAO. RecordSet

    avatar
    _Line33_
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  _Line33_ em 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 100%

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

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

    Mensagem  JPaulo em 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 100%

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

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

    Mensagem  _Line33_ em 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 100%

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

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

    Mensagem  _Line33_ em 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

    Conteúdo patrocinado

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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 15/12/2019, 23:08