Olá Feras de Plantão, boa tarde.
Novamente recorro aos mestres para uma ajuda fundamental na instrução sql abaixo:
Há aproximadamente um ano o Mestre AHTeixeira me ajudou com o código abaixo para criar uma tabela no backend e a coisa funfou esplendidamente bem.
Naquela época eu pretendia cria uma tabela na base de dados do backend de modo a retratar todo o movimento do ano até o mês anterior ao mês atual.
Heis o código:
Private Sub Comando17_Click()
On Error GoTo Err_Comando17_Click
If MsgBox("Este procedimento pode demandar alguns minutos. " & Chr(13) & "Você pretende continuar ? ", vbYesNo, " InfoBasic Smart System") = 6 Then
'inicio, definir variaveis
Dim strSql, strCaminho
'vai consultar caminho
strCaminho = DLookup("path_0", "tblCaminhoBe")
'construir instrução SQL
strSql = "SELECT DISTINCT tblFrequência.IdFreq, tblFrequência.Ano, Month([DataEvento]) AS Mês, Format([DataEvento],'mmmm/yyyy') AS MêsRef, " & _
"tblTime.DataEvento, DTS(First([FirstDia]),Last([LastDay])) AS DiasPrevistos, " & _
"tblFrequência.CodUsuario, tblFrequência.Usuario, tblFrequência.Bolsa, " & _
"Int(DateDiff('n',0,[JornadaDia])*[DiasPrevistos]/60) &':'& " & _
"Format((DateDiff('n',0,[JornadaDia])*[DiasPrevistos] Mod 60),'00') AS JornadaPrevista, " & _
"([Bolsa]/Left((DTS(First([FirstDia]),Last([LastDay])))*Int(Left([JornadaDia],2)) & ':00',2)) AS ValorHora, " & _
"tblTime.Início, tblTime.Final, tblFrequência.JornadaDia, IIf(IsNull([Início]) Or " & _
"IsNull([Final]),0,fncIntervalo([Início],[Final])) AS HorasTrabalhadas INTO tblBancoHoras " & _
"IN '" & strCaminho & "' FROM (tblFrequência INNER JOIN tblMeses ON (tblFrequência.Ano = tblMeses.Ano) AND " & _
"(tblFrequência.MêsTrab = tblMeses.MêsTrab)) INNER JOIN tblTime ON tblFrequência.IdFreq = tblTime.IdFreq " & _
"GROUP BY tblFrequência.Ano, Month([DataEvento]), Format([DataEvento],'mmmm/yyyy'), tblTime.DataEvento, " & _
"tblFrequência.CodUsuario, tblFrequência.Usuario, tblFrequência.Bolsa, tblTime.Início, tblTime.Final, " & _
"tblFrequência.JornadaDia, IIf(IsNull([Início]) Or IsNull([Final]),0,fncIntervalo([Início],[Final])), " & _
"tblFrequência.IdFreq HAVING tblFrequência.Ano = Year(Date()) And Month([DataEvento]) < Month(Date()) " & _
"And tblTime.Final Is Not Null ORDER BY tblFrequência.Ano DESC , Month([DataEvento]) DESC , tblFrequência.CodUsuario;"
'aqui chama a consulta
DoCmd.SetWarnings False
DoCmd.RunSQL (strSql)
DoEvents
DoCmd.SetWarnings True
MsgBox "Dados atualizados com sucesso. ", vbInformation, " InfoBasic Smart System"
DoCmd.OpenForm "frmAdministrador"
DoCmd.Close acForm, "frmAtualização"
End If
Exit_Comando17_Click:
Exit Sub
Err_Comando17_Click:
MsgBox err.Description
Resume Exit_Comando17_Click
End Sub
Acontece que a diretoria resolveu que a tabela a ser criada não expurgue os dados do ano anterior, mantendo todos os dados e apenas acrescentando os novos dados até o final do mês anterior ao atual.
Já queimei meus neurônios e não estou conseguindo adaptar a sua instrução SQL.
Fico aguardando a mão dos Mestres realizar esse novo milagre da informática.
Abraços, WSenna