ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Relatório agrupando pela data.

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Sex Nov 25, 2011 1:53 am    Assunto: Relatório agrupando pela data. Responder com Citação

Fala Rapaziada! SegUinte; Tenho uma tabelinha pra movimentação de caixa que tem a seguinte estrutura;

CODMOVIMENTOCAIXA (chave da tabela)
DESCRICAO (descrição da movimentação)
ENTRADASAIDA (0 = entrada, 1 = retirada)
DATAHORA (data e hora da movimentação)
STATUS (A = aberto, F = fechado)
USUARIO (usuário quem realizou a movimentação)
PONTODEVENDA (descrição do ponto de venda)
VALOR (valor da movimentação)
PDVTERMINAL (Auxiliar para o join; 0 = Indica que é PDV, 1 = Indica que é terminal)
CODPONTODEVENDA (chave do ponto de venda)

E tenho a seguinte query;

Código:
SELECT CODPONTODEVENDA, PONTODEVENDA, TIPOMOVIMENTACAO, DATAHORA, USUARIO, DESCRICAO, VALOR FROM
(
SELECT A.CODPONTODEVENDA, A.PONTODEVENDA, A.ENTRADASAIDA AS TIPOMOVIMENTACAO, A.DATAHORA, A.USUARIO, A.DESCRICAO, A.VALOR
FROM       TBMOVIMENTOCAIXA        A
INNER JOIN TBTERMINAISPEDIDOSVENDA B ON ((A.CODPONTODEVENDA = B.CODTERMINALPEDIDOSVENDA) AND (A.PDVTERMINAL = 1)
                                          AND (A.STATUS = 'A'))

UNION

SELECT A.CODPONTODEVENDA, A.PONTODEVENDA, A.ENTRADASAIDA AS TIPOMOVIMENTACAO, A.DATAHORA, A.USUARIO, A.DESCRICAO, A.VALOR
FROM       TBMOVIMENTOCAIXA A
INNER JOIN TBPONTOSDEVENDA  B ON ((A.CODPONTODEVENDA = B.CODPONTODEVENDA) AND (A.PDVTERMINAL = 0)
                                   AND (A.STATUS = 'A'))                                        
) ORDER BY PONTODEVENDA, DATAHORA


que me auxilia a popular o seguinte relatório, só baixar e abrir no WordPad;

http://leonardogazio.atspace.com/relatorio.rtf

Ali nesse relatório eu tenho o grupo que lista todos os caixas abertos e a movimentação de cada um, mas o que eu preciso é adicionar mais um grupo nesse relatório tipo assim;

Data
Caixa
Movimentação

Ou seja, mostrar os caixas agrupados pela data. Alguém poderia me ajudar a reformular esse SQL? Qualquer idéia é bemvinda, []'s.
_________________
Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.

Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Nov 25, 2011 9:11 am    Assunto: Responder com Citação

Se entendi corretamente, acho que só é necessário alterar o Order by para ordenar por Data (sem as horas), depois por PONTODEVENDA e DATAHORA (ou só a hora).
Não sei qual banco você está utilizando, mas em Firebird ficaria mais ou menos como segue:

Código:
) ORDER BY CAST(DATAHORA AS DATE), PONTODEVENDA, DATAHORA


Espero que seja útil.


Editado pela última vez por imex em Ter Out 17, 2023 11:50 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Sex Nov 25, 2011 1:52 pm    Assunto: Responder com Citação

Olá amigão, tô usando o Oracle, então, é quase isso. Cara deixa eu tirar um dúvida, a cliente quer vero movimento de caixa pela data, é mesmo necessário isso? Não pode ser um relatório de faturamento filtrado por data agrupando pala forma de pagamento?

[]'s.
_________________
Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.

Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Nov 25, 2011 2:32 pm    Assunto: Responder com Citação

Com o Order by original você tem:

Código:
PDV-0002 | 24/11/2011 | 10
PDV-0002 | 24/11/2011 |  5-
PDV-0002 | 25/11/2011 | 20
PDV-0002 | 25/11/2011 |  8-

TERMINAL-0001 | 24/11/2011 | 18
TERMINAL-0001 | 24/11/2011 | 15-
TERMINAL-0001 | 25/11/2011 | 25
TERMINAL-0001 | 25/11/2011 | 18-


Com o Order by modificado:

Código:
PDV-0002 | 24/11/2011 | 10
PDV-0002 | 24/11/2011 |  5-
TERMINAL-0001 | 24/11/2011 | 18
TERMINAL-0001 | 24/11/2011 | 15-

PDV-0002 | 25/11/2011 | 20
PDV-0002 | 25/11/2011 |  8-
TERMINAL-0001 | 25/11/2011 | 25
TERMINAL-0001 | 25/11/2011 | 18-


Se estou entendendo corretamente, acho que é necessário alterar o Order by, ou se você trabalhar com CDS pode alterar a ordem com as propriedades IndexFieldNames ou IndexName.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB