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!
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!