Ir para conteúdo
Fórum Script Brasil
  • 0

Relatórios


VDLR

Pergunta

Pessoal alguém poderia me dar uma luz de como montar este tipo de relatório.

O usuário solicita um determinado período.

exemplo 01/01/07 a 30/03/07

Tipo do relatório

Faturamento por período

Cliente Janeiro Fevereiro Março

XXXX 150,00 250,00 260,00

YYYY 140,00 130,00 120,00

Total 290,00 380,00 380,00

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

23 respostass a esta questão

Posts Recomendados

  • 0

Olá VDLR

Wu utilizo a seguinte SQL para buscar registros entre determinadas datas:

With TABELA Do
      Begin
        TABELA .Close;
        TABELA .SQL.Clear;
        TABELA .SQL.Add('Select * From TABELA );
        TABELA .SQL.Add('Where CAMPO_DATA between :Inicial and :Final');
        TABELA .Parameters.ParamByName('Inicial').Value := StrToDate(EdtInicial.Text);
        TABELA .Parameters.ParamByName('Final').Value := StrToDate(EdtFinal.text);
        TABELA .SQL.Add('Order By Codigo');
        TABELA .Open;
      end;

Utilizo AdoQuery como componente de conexão com o banco...

A estrutura do relatório você terá que montar conforme sua necessidade....

Espero ter ajudado, qualquer coisa estamos por ai...

Alexandre

Link para o comentário
Compartilhar em outros sites

  • 0
O usuário solicita um determinado período.

exemplo 01/01/07 a 30/03/07

Tipo do relatório

Faturamento por período

Cliente Janeiro Fevereiro Março

XXXX 150,00 250,00 260,00

YYYY 140,00 130,00 120,00

Total 290,00 380,00 380,00

é um tipo de relatório chato de fazer com o quick. Na verdade, relatórios deste tipo não são muito simples com a maioria dos geradores de relatórios.

O meio que vejo, implica em ter um certo limite no número de colunas, então, vai a pergunta: qual seria o provável número máximo de colunas que este relatório teria? (imprimindo em landscape acredito que dê para um ano.)

Se não puder limitar, a coisa complica um pouco.

Link para o comentário
Compartilhar em outros sites

  • 0
O meio que vejo, implica em ter um certo limite no número de colunas, então, vai a pergunta: qual seria o provável número máximo de colunas que este relatório teria? (imprimindo em landscape acredito que dê para um ano.)

Micheus beleza.

" UM ANO " esta bom demais, alias seria o ideal.

Abraço

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

VLDR, dê uma olhada neste post do colega paulobergo.

Mesmo em Paradox (não sei se é seu caso) deve funcionar, porém você não utilizará uma data fixa, mas sim um período (between) equivalente ao início e fim do mês.

Veja se você consegue entender a lógica da consulta. Isto facilitaria muito o seu relatório.

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus. beleza.

Olhei o post mas fiquei com algumas dúvidas. ;)

No post ele fala no período de uma semana, seleciona o periodo e vem somando os dias certo?

No meu caso, como eu faria para somar meses de uma tabela de faturamento ?

Ex. período de 01/01/2007 a 31/08/2007

Como faço a soma dos meses jan, fev, mar, abr, mai, jun, jul, ago ? :o

Como eu saberia o mês dentro do período ?? :blink:

Abraço

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0
No post ele fala no período de uma semana, seleciona o periodo e vem somando os dias certo?

No meu caso, como eu faria para somar meses de uma tabela de faturamento ?

não tenho 100% de certeza de que daria para aplicar o exemplo ao pé da letra - talvez o paulobergo posso ajudar. Mas, a princípio, a seria uma questão de filtrar o período de 1 ano, no lugar de 1 semana. Agrupar por mês, ao invés de dia.

Como faço a soma dos meses jan, fev, mar, abr, mai, jun, jul, ago ? :o
usando o SUM e agrupando pelo período correspondente ao mês (de 1 a 30 ou 31 - ou 28/29 em fev).

Como eu saberia o mês dentro do período ?? :blink:
dependendo que que banco de dados está utilizando tem uma função/instrução para isto.

Qual bando de dados você está utilizando?

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus beleza.

dependendo que que banco de dados está utilizando tem uma função/instrução para isto.

Qual bando de dados você está utilizando?

Estou usando o INTERBASE.

Micheus será que você poderia passar + ou - o que eu preciso fazer ??? ;)

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus será que você poderia passar + ou - o que eu preciso fazer ???

R.: amigão....seguinte, não sou a pessoa mais indicada pra te dizer como montar um relatório deste tipo, porem passei pelas mesmas dificuldades suas, pois precisava de um relatorio até mais complexo que o seu em paradox.

O problema dele, é que ele é um relatorio lento, pois trabalhei com variaveis no OnPrint dos Qrlabels.

Ele funciona perfeito.....porem é muito chato a montagem dele....mas parece que no seu caso não seria tão dificil pois você quer totalizar os valores de faturamento somente...portanto como sendo apenas um tipo de dado seria mais facil.

A ideia é no quickreport criar duas queries:

*Uma chamada query1 que seria a consulta em si

*Uma query chamada QryMeses que seria a query que iria fazer os calculos dos meses e mostrar no Onprint de cada qrlabel.

nela você colocaria o seguinte codigo:

SELECT sum(Qtdhe) as TOTAL FROM Despesas, func
where (DESPESAS.CODFUN = FUNC.CODIGO) 
and DESPESAS.COMPET NOT LIKE "13/%"
and extract(month from data)=:pMes
and extract(year from data)=:pAno
and Func.Codigo=:pCliente
*você colocaria um qrlabel pra cada mes de faturamento.... em cada qrlabel no onprint você colocaria assim:
procedure TFormRTME2.QRLabel15Print(sender: TObject; var Value: String);
begin
  qryMeses.Close;
  //abaixo a variavel PAno trata o ano
  qryMeses.ParamByName('pAno').AsInteger := StrToInt(FormRTME.ComboBox1.Text); //selecionada o ano
  //abaixo a variavel pmes trata o mes
  qryMeses.ParamByName('pMes').AsInteger := 1; //mes 1-janeiro
  //abaixo a variavel pcliente trata o cliente atraves do codigo do clientes
  qryMeses.ParamByName('pCliente').AsInteger := Query1CODIGO.AsInteger;
  qryMeses.Open;
  {aqui a variavel que totaliza o total p/ mes (janeiro) na banda detail}
  TotJaneiro := TotJaneiro + qryMesesTOTAL.AsCurrency;
  //
  {aqui a varivel que totaliza na banda amarela o total geral}
  TJan := 0;
  TJan := TJan + qryMesesTOTAL.AsCurrency;
  //
  Value := FormatFloat('###,###,##0.00',qryMesesTOTAL.AsCurrency);
  //abaixo ele verifique se o valor é 0,00 se for ele não conta o registro...que é mostrado no qrlabel67
If (value<>'0,00') and (value<>'') then
RJan := RJan + 1;
end;

Note que é um monte de variaveis.....isto da um nó na cabeça...mas..tem que criar e depois inicializar....em fim...ai vai da sua imaginação...

Mas a ideia central é esta......funciona perfeito, exceto como citei acima o relatorio é muito lento, demora dependendo da quantidade de dados alguns minutos....

Só pra você ter uma ideia...estou com uma base paradox de 120 mb com 70.000 registros de janeiro até agosto deste ano...e o relatorio trabalha com mais dados...faturamento, peso, valormercadoria uns 8 dados....e funciona legal, exceto pela demora...hehehe..

Inclusive eu uma vez postei algo aqui no forum inclusive na época nosso colega Micheus também participou do tópico, pra tentar otimizar o processo mas não tive sucesso e acabei ficando com esta ideia mesma...

Ralei um monte pra montar este tipo de relatorio juntamente com um amigo (Rodrigo Thor de Sinop no Mato Grosso)mais experiente é claro.

Bom é isto ai amigão...Boa sorte..tomará que você consiga...

Espero que ajude a dica.

Abraços. :D

Editado por Eder
Link para o comentário
Compartilhar em outros sites

  • 0
Estou usando o INTERBASE.

Micheus será que você poderia passar + ou - o que eu preciso fazer ??? ;)

VDLR, desculpe a demora em dar alguma resposta.

Estive pensando em como exemplificar, de forma simples, o uso do recurso proposto pelo colega paulobergo para uma situação como a sua.

Como acho que pode ser útil a outros colegas ainda iniciantes no assunto, acabei por construir um pequeno artigo tentando explicar cada etapa do processo para a obtenção da consulta que buscaria este tipo de informação. Então, dê uma olhada nele e veja se vai realmente ajudar na compreensão do processo -> "Construindo Uma Consulta Sql Passo-a-passo, Obtendo uma matriz como resultado"

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

VDLR, se conseguir montar a consulta, no formato "tabela", dê uma olhada neste exemplo (em anexo) para ver como o relatório fica bem simples.

Eu usei os componentes IB, mas não consegui sucesso na execução do programa, então a visualização foi feita apenas em modo design-time (ativada consulta, botão direito no QuickTep1, opção Preview do menu). Veja se você configura para rodar no seu PC.

RelTeste.zip

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, tudo bem ?

Consegui fazer o download e testar o sistema, porém estou recebendo o seguinte erro quando clico no botão para exibir o relatório ou tento ativar a Query.

Dynamic SQL error

SQL Error cod = -104

Token Unknown - Line 3, char 6

SELECT.

Não sei o que fazer :unsure:

Abraço

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0
Consegui fazer o download e testar o sistema, porém estou recebendo o seguinte erro quando clico no botão para exibir o relatório ou tento ativar a Query.

Dynamic SQL error

SQL Error cod = -104

Token Unknown - Line 3, char 6

SELECT.

Não sei o que fazer :unsure:

Este erro é executando o exemplo que lhe passei? Ou você já adaptou ao seu projeto e este erro está aparecendo?

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que deve ser aquele lance de não suportar select em sub-selects. Lá no post#13 eu postei o tal tutorial, e mencionei esta possibilidade. Lá tinha um link para uma avaliação (Estatistica de resultado de uma consulta SQL) em que a 2ª coluna é uma forma alternativa a este tipo de consulta.

Então, abra a propriedade SQL da consulta e substitua o código pelo que está em anexo.

Cosulta_Completa_Alternativa.txt

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, beleza

Substitui o código, só que agora ao clicar no botão para exibir o relatório recebo a seguinte mensagem de erro.

IBQuery1: Parameter 'DAT_INICIAL' not found.

Precisa fazer alguma alteração nesta procedure

procedure TForm2.ShowReport(DateRef :TDateTime);
begin
  IBQuery1.ParamByName('DAT_INICIAL').AsDateTime := StartOfTheYear(DateRef);
  IBQuery1.ParamByName('DAT_FINAL').AsDateTime := EndOfTheYear(DateRef);
  IBQuery1.Open;
  try
    QuickRep1.Preview;
  finally
    IBQuery1.Close;
  end;
end;

Ao tentar ativar a Query dá este erro.

Dynamic SQL error

SQL Error cod = -104

Token Unknown - Line 2, char 30

AS.

Desculpe a demora.

Abraço

Valdecir

Editado por Micheus
Adicionado o delimitador de código [code] [/code]
Link para o comentário
Compartilhar em outros sites

  • 0

Valdecir, pode ficar zangado comigo. Eu esqueci de parametrizá-la. :ph34r:

Já atualizei o anexo no post#20. Voce pode baixá-lo e proceder como indicado lá.

Também substituí os fontes do código no post#14, ficando no relatório dois IBQuery, cada qual com uma versão da consulta, sendo que a que está vinculada ao QuickReport é IBQuery2.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, beleza.

Baixei o código porém só tinha este arquivo

RelTeste

Atualizei a IBQuery do código que eu tinha aqui conforme o anexo do post#20, porém agora ao clicar no botão ou tentar ativar a mesma da o seguinte erro:

Dynamic SQL error

SQL Error cod = -104

Token Unknown - Line 2, char 30

AS.

Poxa, será que tem solução...........

Abraço

Valdecir

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...