MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

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

    Somar Intervalo de Datas

    avatar
    Bessa_SP
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 219
    Registrado : 07/11/2013

    Somar Intervalo de Datas Empty Somar Intervalo de Datas

    Mensagem  Bessa_SP em 31/1/2019, 00:24

    Boa noite Srs.
    Coloquei em anexo um BD teste, aonde tenho duas tabelas
    TblDespesas
    TblCentro

    Fiz alguns lançamentos utilizando somente dois tipos de centro de custo: Gasolina / alimentação.

    Dúvida:
    Criei um formulário com nome frm_data com os campos txt_inicio/txt_fim/txt_ultimo, aonde quero os dias que fazem parte da semana e calcular as despesas por centro de custo de acordo com cada semana.
    Exemplo:
    txt_inicio = 01/01/2019
    txt_fim = 05/01/2019
    txt_ultimo = 31/01/2019

    Sendo assim do dia 01 a 05 é a primeira semana, 06 a 12 segunda semana, 13 a 19 terceira semana, 20 a 26 quarta semana e 27 a 31 quinta semana.
    E colocando os valores que foram simulado em Excel cheguei aos seguintes resultados:

    Gasolina - 1ª Semana - R$ 500,00 / 2ª Semana - 580,00 / 3ª Semana - 270,00 / 4ª Semana - 515,00 / 5ª Semana - 475,00
    Aliementação - 1ª Semana - R$ 100,00 / 2ª Semana - 203,00 / 3ª Semana - 139,00 / 4ª Semana - 130,00 / 5ª Semana - 126,00

    Eu preciso chegar nesses resultado através de uma consulta.
    Alguém pode me ajudar?
    Obrigado.
    Anexos
    Somar Intervalo de Datas AttachmentSomar_Semana.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (23 Kb) Baixado 13 vez(es)
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Somar Intervalo de Datas Empty Re: Somar Intervalo de Datas

    Mensagem  Dilson em 2/2/2019, 22:13

    Olá Amigo !

    Deixar algo para inicio de uma solução.

    Se for para reproduzir numa consulta, veja ao clicar de um botão:

    On Error GoTo TratarErro
    Dim bd As DAO.Database
    Dim Query1 As QueryDef
    Dim FiltroRelatorio As String
    If Nz(Len(cboCC)) = 0 Then
           FiltroRelatorio = "TblDespesa.Dt_lancamento >= #" & Format(txt_inicio, "mm-dd-yyyy") & "# AND TblDespesa.Dt_lancamento <= #" & Format(txt_fim, "mm-dd-yyyy") & "#"
    Else
           FiltroRelatorio = "TblDespesa.Dt_lancamento >= #" & Format(txt_inicio, "mm-dd-yyyy") & "# AND TblDespesa.Dt_lancamento <= #" & Format(txt_fim, "mm-dd-yyyy") & "# AND TblCentro.Cod_Centro=" & Me.cboCC
    End If
    Recomeca:
    Set bd = CurrentDb
    Set Query1 = bd.CreateQueryDef("SuaConsulta", "SELECT DISTINCT TblCentro.Centro_Custo, Sum(TblDespesa.Valor_Despesa) AS TotalDespesa " _
                                                       & "FROM TblCentro RIGHT JOIN TblDespesa ON TblCentro.Cod_Centro = TblDespesa.Cod_Centro " _
                                                       & "WHERE " & FiltroRelatorio & " " _
                                                       & "GROUP BY TblCentro.Centro_Custo;")
    DoCmd.OpenQuery "SuaConsulta", acViewPreview
    bd.Close
    Exit_TrataErro:
    Exit Sub
    TratarErro:
    If Err.Number = 3012 Then
          DoCmd.DeleteObject acQuery, "SuaConsulta"
          GoTo Recomeca
    Else
          MsgBox "Aconteceu um erro inesperado. N° do Erro: " & Err.Number & "; Descrição do Erro: " & Err.Description
    End If
    Resume Exit_TrataErro



    Se não selecionar nenhum Centro de Custo a consulta vai exibir o resultado de todos no período.

    Veja funcionando no seu exemplo anexo:
    Anexos
    Somar Intervalo de Datas AttachmentSomar_Semana_implementado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (37 Kb) Baixado 16 vez(es)
    avatar
    Bessa_SP
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 219
    Registrado : 07/11/2013

    Somar Intervalo de Datas Empty Somar Intervalo de Datas

    Mensagem  Bessa_SP em 4/2/2019, 13:55

    Amigo Dilson

    Bom dia!

    Primeiro muito obrigado é me dar uma força...
    Eu fiz uma consulta básica colocando as duas tabelas e coloquei o nome dela dentro do seu código, deu certo, ele realmente filtra e me devolve os valores dentro daquele período.
    Porém não querendo abusar da sua boa vontade, isso não resolve o meu problema todo, pois esses valores referem-se a primeira semana, eu necessito que depois do último dia daquela semana ele abra uma nova semana e calcule os valores Exemplo:
    Data Inicial - 01/01/2019
    Data final - 05/01/2019
    referem-se a primeira semana

    Entre os dias 06/01/2019 a 12/01/2019 será a segunda semana, no intervalo de 07 dias começará uma nova semana até o dia 31/01/2019 que seria o último dia do mês.

    E não tenho nem ideia de como fazer isso, já rodei a internet em busca de um código similar que eu possa estudar e não encontrei nada parecido, se o amigo puder me ajudar lhe agradeço muito, de qualquer forma vou estudar o código que postou para aprendizado.

    Valeu pela ajuda e aguardo vosso retorno assim que possível.

    Obrigado.
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Somar Intervalo de Datas Empty Re: Somar Intervalo de Datas

    Mensagem  Dilson em 6/2/2019, 14:09

    Olá !

    Ah sim, compreendi. O que desejas é a criação de uma consulta referência cruzada em modo dinâmico. Um desafio, já que colunas da consulta referencia cruzada não é dinâmica, não renderiza no modo relatório, a não ser que a visualização esteja em modo consulta que não é comum usar.

    Já pensando aqui existe uma possibilidade de dar certo, que seria capturar os dados de cada período (usando o código que escrevi acima) e salvar em uma tabela temporária e a partir dessa tabela criar a consulta de referência cruzada em que os períodos ficariam nas linhas e os objetos nas colunas ou vice versa com exibição em modo consulta.

    Ou satisfaz que seja em outro formato tipo aninhado por exemplo ?
    avatar
    Bessa_SP
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 219
    Registrado : 07/11/2013

    Somar Intervalo de Datas Empty Somar Intervalo de Datas

    Mensagem  Bessa_SP em 6/2/2019, 20:47

    Amigo, muito obrigado pela sua ajuda!!!

    Olha sinceramente eu não conheço sobre consulta cruzada, já li alguma coisa sobre criar uma tabela temporária, mas nunca fiz nada parecido.
    Tive uma ideia que não sei se ajudaria e talvez desse menos trabalho, algo básico, criei uma outra tabela chamada TblCalendario, aonde tem os campos:
    Codigo - AutoNumeração
    Data_Calendario - Data/Hora
    Semana - Número

    Aonde eu coloquei os seguintes dados:
    01/01/2019 - Semana 1
    06/01/2019 - Semana 2
    13/01/2019 - Semana 3
    20/01/2019 - Semana 4
    27/01/2019 - Semana 5
    01/02/2019 - Semana 6

    Bom eu alimentaria isso até 2050 por exemplo...
    No formulário teria Data Inicial e Data Final, e então Somaria-se os centro de custos de acordo com a semana filtrada.
    Eu posso estar errado mais creio que assim poderia ficar mais fácil de chegar ao resultado.
    Com relação a sua pergunta, meu amigo eu conseguindo chegar no resultado pode ser da forma como achar melhor...
    Estou postando o meu bd aonde acrescentei a tabela acima referida.
    Anexos
    Somar Intervalo de Datas AttachmentSomar_Semana_implementado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (40 Kb) Baixado 8 vez(es)
    avatar
    Bessa_SP
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 219
    Registrado : 07/11/2013

    Somar Intervalo de Datas Empty Somar Intervalo de Datas

    Mensagem  Bessa_SP em 6/2/2019, 20:48

    Estou lhe enviando uma planilha para que amigo entenda como pretendo expor no relatório.

    Obrigado...
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Somar Intervalo de Datas Empty Re: Somar Intervalo de Datas

    Mensagem  Dilson em 8/2/2019, 00:43

    Olá boa noite!

    Está bastante claro o modelo que deseja alcançar. Essa referência cruzada de períodos nas colunas e os os objetos nas linhas não renderiza dinamicamente nos relatórios access. Como disse na #mensagem n° 4, existe uma possibilidade de dar certo e ainda assim não irá renderizar no relatório e sim numa consulta por meio do VBA. Ainda não tive disponibilidade para analisar esse problema com foco efetivo em solução, assim que tiver vou contribuir mais um pouco ok.

      Data/hora atual: 20/10/2020, 21:03