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]Ajuda com criação de codigo com 3 recordset.

    wellingtoneo
    wellingtoneo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 294
    Registrado : 30/07/2012

    [Resolvido]Ajuda com criação de codigo com 3 recordset. Empty Ajuda com criação de codigo com 3 recordset.

    Mensagem  wellingtoneo 13/6/2013, 12:43

    Primeiro gostaria de saber se alguém dispõe de algum material para que eu possa estudar esse tal recordset... sou leigo e não tenho conhecimento algum desta ferramenta.
    Bom, minha dificuldade é a seguinte:
    O mestre JPaulo (Obrigado!) me passou esse código que tentei realizar algumas adaptações, mas sem sucesso. Veem se podem me ajudar!

    Public function fncatualizar()
    'By JPaulo ® Maximo Access
    On Error Resume Next
        Dim rstlista       As DAO.Recordset
        Dim rstferias      As DAO.Recordset
        Dim rstabsenteismo As DAO.Recordset
        Dim fld            As DAO.Field
        Dim strUP          As Integer
        Dim strDN          As Integer
        Dim i              As Integer
       
       
        'Abre o recordset da tabela tbllista
        Set rstlista = CurrentDb.OpenRecordset("Select * from tbllista ")
        'se não existirem registros, o código morre aqui
             If rstlista.RecordCount = 0 Then Exit Sub
      
        'vai para o primeiro registro da tabela
        rstlista.MoveFirst
        Do
      
       'Aqui eu gostaria de carregar o recordset rstferias com o criterio "rstlista!Registro" e do mês atual lógico que todos os colaboradores não estaram de ferias então terá recordset vazio.
       
        rstferias = CurrentDb.OpenRecorset("Select * From tblFeriasHorista Where rstlista.Registro=" & rstferias.Registro & rstferias!Data_inicial Between 1° dia do mês e o ultimo dia do mês"")
       
        'if o rstferias for vazio pular para verificar se tem faltas.  
       'extraí o dia inicial da tabela férias
              strUP = Day(rtsferias!Data_Inicial)
             'extraí o dia final da tabela férias
              strDN = Day(rtsferias!Data_Final)
                     
        'monta o intervalo entre os dias
            For i = strUP To strDN
        'percorre todos os campos da tabela
            For Each fld In rstlista.Fields
        'se encontrar o campo com o nome igual ao intervalo de dias, faz o update
            If fld.Name = Trim(Str(i)) Then
               rstlista.Edit
        'update com a letra F
               rstlista(fld.Name).Value = "F"
               rstlista.Update
            End If
    Next fld
    Next

     
    'rstabsenteismo com o criterio "rstlista!Registro" e do mês atual se não houver nenhuma falta e nem ferias buscar o proximo registro do rstlista...
     
    rstabsenteismo = CurrentDb.OpenRecorset("Select * From tblabsenteismo Where rstlista.Registro=" & rstabsenteismo.Registro & rstferias!Data_Afastamento Between 1° dia do mês e o ultimo dia do mês "")     
     
    'If vazio, pular para o proximo registro do recordset rstlista
    'Aqui preciso pegar os registro de falta do colorador filtrado que pode ter mais de uma data e verificar com os dias da lista de presença, se forem iguais então passa o valor Cod do rstabsenteimos para
    'o dia dia equivalente no recorset rstlista. Ex: faltou no dia 1/06/13 pega o Cod e passa para rstlsita no dia 1/06/13; o mesmo colaborador faltou no dia 10/06 passa para rslt no dia 10/06 o Cod.     
          
    Loop While rtslista.EOF = True

    rstlista.Close
    rstferias.close
    rstabsenteismo.close
    End function
    Bom, a ideia é verificar se o colaborador tem ferias programada e se tem falta. Com isso, podemos gerar a lista atualizada e com as informações...
    Agradeço a todos pela ajuda!
    wellingtoneo
    wellingtoneo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 294
    Registrado : 30/07/2012

    [Resolvido]Ajuda com criação de codigo com 3 recordset. Empty Obrigado por não responderem. ehehehe!!!!

    Mensagem  wellingtoneo 14/6/2013, 18:59

    Pessoal, como não obtive resposta do forum me coloquei a pesquisar sobre o assunto e os frutos estão ai...
    Vejam como resolvir meu problema. Ah, aproveitando a oportunidade agradeço imensamento a JPaulo, que me indicou esse caminho.
    Public Function fncatualizar()
    Dim rstlista  As DAO.Recordset
    Dim rstferias As DAO.Recordset
    Dim rstfaltas As DAO.Recordset
    Dim reg       As Variant
    Dim iniciomes As Date
    Dim finalmes  As Date
    Dim fldlista  As DAO.Field
    Dim fldfaltas As DAO.Field
    Dim i         As Integer
    Dim d         As Date
    Set rstlista = CurrentDb.OpenRecordset("Select * from tbllista ")
    If rstlista.EOF = True Then Exit Function
    rstlista.MoveFirst
    Do
    reg = rstlista!Registro
    Set rstferias = CurrentDb.OpenRecordset("Select * From tblFeriasHorista Where tblFeriasHorista!RegistroF=" & reg & "")
    If rstferias.RecordCount > 0 Then
       iniciomes = Format(rstferias!Data_Inicial, "dd/mm")
       finalmes = Format(rstferias!Data_Final, "dd/mm")
                     
        'monta o intervalo entre os dias
           
            For d = iniciomes To finalmes
        'percorre todos os campos da tabela
            For Each fldlista In rstlista.Fields
        'se encontrar o campo com o nome igual ao intervalo de dias, faz o update
            If fldlista.Name = Trim(Str(Format(d, "dd"))) And Format(d, "mm") = Format(Date, "mm") Then
               rstlista.Edit
        'update com a letra F
               rstlista(fldlista.Name).Value = "F"
               rstlista.Update
            End If
                 
    Next fldlista
                
                  Next
                 
    End If
    iniciomes = DateSerial(Year(Date), Month(Date) + 1, 0) ' Primeiro dia do mês atual.
    finalmes = DateSerial(Year(Date), Month(Date) - 1, 1)  ' Ultimo dia do mês atual.
    Set rstfaltas = CurrentDb.OpenRecordset("Select * from tblAbsenteismoHoristas Where Registro =" & reg & "  And [tblAbsenteismoHoristas!Data_Afastamento] Between #" & iniciomes & "# And #" & finalmes & "#")
    If rstfaltas.RecordCount > 0 Then
       iniciomes = Day(rstfaltas!Data_Afastamento)
       finalmes = Day(rstfaltas!Data_Retorno)
           
    For i = iniciomes To finalmes - 1
        For Each fldlista In rstlista.Fields
       
             If fldlista.Name = Trim(Str(i)) Then
                rstlista.Edit
                rstlista(fldlista.Name).Value = rstfaltas!Cod
                rstlista.Update
             End If
        Next fldlista
    Next
    End If
    rstlista.MoveNext
    Loop While Not rstlista.EOF
    rstfaltas.Close
    rstlista.Close
    rstferias.Close
    End Function

      Data/hora atual: 2/5/2024, 08:39