Jump to content


Photo

Relatorio


  • Faça o login para participar
10 replies to this topic

#1 nelson8000

nelson8000

    Turista

  • Usuários
  • 53 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Programação, Fotos ....

Posted 08/06/2004, 09:35

Colegas é o seguinte,
Eu tenho um banco de dados Access e Trabalho com o Delphi 6.

Eu tenho um Formulario que vc escolhe a "Empresa", "Escola", "Conta", "Mês/Ano"...
Com essas informações eu gero um relatório com as "colunas" .. A Vencer , Em Atraso, Pagos no Banco, Juros Pagos no Banco , Pagos na Cob1, Juros Pagos na Cob1, Cobrança 2, Juros Cobrança 2 ...

Atualmente imprime mês a mês .. por ex:
Se eu escolho no formulário o mês "05/2004"

Ele puxa todos os valores referentes ao mês e ano digitado, e exibe no relatorio um somatório de todos os valores (SUM) ... e usando o "Where" eu distribuo nas colunas já citadas acima....

Pra criar esse relatorio eu uso 8 querys...
O código do botão gerar relatório é o seguinte....


{A Vencer}

dmData.qryMENSALVencer.SQL.Clear;
dmdata.qryMENSALVencer.SQL.Add('SELECT SUM(valor) AS vencer FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(vencer.Text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALVencer.Open;

{Em Atraso}

dmData.qryMENSALAtraso.SQL.Clear;
dmdata.qryMENSALAtraso.SQL.Add('SELECT SUM(valor) AS atraso FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(atraso.Text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALAtraso.Open;

{Banco}

dmData.qryMENSALBanco.SQL.Clear;
dmdata.qryMENSALBanco.SQL.Add('SELECT SUM(valor) AS banco FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(banco.Text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALBanco.Open;

{Banco - jUROS}

dmData.qrymensalBncjR.SQL.Clear;
dmdata.qryMENSALBNCJR.SQL.Add('SELECT SUM(JUROS) AS bancoJR FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(banco.Text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALBNCJR.Open;

{Cob 1}

dmData.qryMENSALCob1.SQL.Clear;
dmdata.qryMENSALCob1.SQL.Add('SELECT SUM(valor) AS cob1 FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(cob1.Text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALCob1.Open;

{Cob 1 - JUROS}

dmData.qryMENSALCob1JR.SQL.Clear;
dmdata.qryMENSALCob1JR.SQL.Add('SELECT SUM(JUROS) AS cob1JR FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(cob1.Text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALCob1JR.Open;

{Cob 2}

dmData.qryMENSALCob2.SQL.Clear;
dmdata.qryMENSALCob2.SQL.Add('SELECT SUM(valor) AS cob2 FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(cob2.text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALCob2.Open;

{Cob 2 - JUROS}

dmData.QRYMENSALCob2JR.SQL.Clear;
dmdata.qryMENSALCob2JR.SQL.Add('SELECT SUM(JUROS) AS cob2JR FROM tblCobTilt where empresa like '+#39+'%'+(edtEmpresa.Text)+'%'+#39' and escola like '+#39+'%'+(edtescola.Text)+'%'+#39' and conta like '+#39+'%'+(edtConta.Text)+'%'+#39' and situacao like '+#39+'%'+(cob2.text)+'%'+#39' and datavencimento like '+#39+'%'+(edtData.Text)+'%'+#39'');
dmData.qryMENSALCob2JR.Open;


Eu preciso que imprima em uma unica folha todos os meses... pois no meu relatorio só sai referente a um mês...

Vou citar um ex do q eu preciso...

Por ex: as datas deveriam ficar no canto esquerdo do relatorio.. e na frente dele os respectivos valores.. divididos nas colunas .. A Vencer , Em Atraso, Pagos no Banco, Juros Pagos no Banco , Pagos na Cob1, Juros Pagos na Cob1, Cobrança 2, Juros Cobrança 2 ...

DATA -------A Vencer---Em Atraso--Pagos no Banco ------até----Cobrança 2

01/2004 ------44,00--------30,00--------60,00---------------------------80,00
02/2004 ------50,00--------60,00--------70,00---------------------------130,00
03/2004 ------15,00--------22,00--------31,00---------------------------12,00
04/2004 ------18,00--------28,00--------85,00---------------------------232,00
05/2004 ------22,00--------85,00--------28,28---------------------------152,20
.
.
.
12/2004 ------120,00--------55,00--------87,28--------------------------- 60,20


Qm puder me ajuda eu agradeço mtooooooooooooooooooooooo...

Abraços

Nelson

Edição feita por: nelson8000, 08/06/2004, 09:35.

P.N.E.O.Q.E.A.V.

#2 proteus_adi

proteus_adi

    @handle:=proteus;//>>>

  • Usuários
  • 309 posts
  • Sexo:Não informado
  • Localidade:Minas Gerais>> Belo Horizonte
  • Interesses:Programação e Web>>>

Posted 08/06/2004, 18:01

Se eu tiver entendido &&
Se você tiver usando o sqlserver vc pode fazer algo tipo
SELECT sum(valor1),
sum(valor2),
datepart(mm,data) ,
datepart(yyyy,data)
FROM tabela
group by datepart(mm,data) ,datepart(yyyy,data)
||
Se você tiver usando o oracle vc pode fazer algo tipo
SELECT sum(valor1),
sum(valor2),
TO_CHAR(data,'MM/YY') ORDERED
FROM tabela
group by data

// bom , pelo menos em teoria... eh assim...


agora mudando de assunto...
vc pode fazer a sql em tempo de execução sem usae #39 o tempo todo...
tipo quando você quer colocar aspas simples.. eh só colocar duas que a segunda vai pra sua sql...
tipo
query.sql.add('Select * from user where login = ''proteus'' ');
olha só..
query.sql.add('Select * from user where login =' + #39 + 'proteus' + #39)
PROTEUS [ADSUMUS]
ETERNAL ########
---------------------------------------------------------------
"Já dizia o mestre: PROGRAMAR é diferente de CODIFICAR"...

#3 nelson8000

nelson8000

    Turista

  • Usuários
  • 53 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Programação, Fotos ....

Posted 08/06/2004, 23:06

e se eu tiver usando o ACCESS???

e como q eu jogaria esses dados nos lugares corretos???
P.N.E.O.Q.E.A.V.

#4 proteus_adi

proteus_adi

    @handle:=proteus;//>>>

  • Usuários
  • 309 posts
  • Sexo:Não informado
  • Localidade:Minas Gerais>> Belo Horizonte
  • Interesses:Programação e Web>>>

Posted 09/06/2004, 09:06

rs!
Foi mal ! Eh que eu não tinha lido o cabeçalho da sua mensagem direito...

Eu nem tenho o Access aqui!
mas vou olhar isso aqui...
mas enquanto isso:::
explica como vc quer "colocar estes dados no lugar"!
PROTEUS [ADSUMUS]
ETERNAL ########
---------------------------------------------------------------
"Já dizia o mestre: PROGRAMAR é diferente de CODIFICAR"...

#5 nelson8000

nelson8000

    Turista

  • Usuários
  • 53 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Programação, Fotos ....

Posted 09/06/2004, 09:39

hahahaha... sem problemas...

Desenhei um relatorio de como ele deveria fikar...

Se vc ou outra pessoa puder ajudar agradeço..

Abraços...


Nelson

Attached Files


P.N.E.O.Q.E.A.V.

#6 nelson8000

nelson8000

    Turista

  • Usuários
  • 53 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Programação, Fotos ....

Posted 09/06/2004, 09:40

Foto do Formulario q puxa o relatorio...

Attached Files


P.N.E.O.Q.E.A.V.

#7 nelson8000

nelson8000

    Turista

  • Usuários
  • 53 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Programação, Fotos ....

Posted 09/06/2004, 09:43

Print Screen do relatorio q está sendo utilizado hj....


Se vc puder ajudar Agradeço!!!!

Abraços

Nelson

Attached Files


P.N.E.O.Q.E.A.V.

#8 proteus_adi

proteus_adi

    @handle:=proteus;//>>>

  • Usuários
  • 309 posts
  • Sexo:Não informado
  • Localidade:Minas Gerais>> Belo Horizonte
  • Interesses:Programação e Web>>>

Posted 09/06/2004, 11:33

bom!

por partes:

SELECT sum(valor) AS valor, FORMAT(DATA, 'MM/YYYY')//seleciono a data como string... com o formato mm/yyyy
FROM ENTRADA
WHERE FORMAT(DATA, 'YYYY')  = '2004' //aqui eu pego só as do ano parametro
GROUP BY FORMAT(DATA, 'MM/YYYY')//mando agrupar pela data

entendeu o format?
eu posso agrupar todos eles discriminando o dia do mes...

agora o subselect
SELECT  chave_ope,

                (Select sum(valor) as atrasado
                 from entrada l
                 where l.chave_ope = f.chave_ope
                 and l.status = 'atrasado' )  as atrasado,

                (Select sum(valor) as pago
                 from entrada l
                 where l.chave_ope = f.chave_ope
                 and l.status = 'pago')  as pago

FROM entrada f
group by chave_ope
entendeu a minha ideia?
vc faz um subselect pra cada item....

mas não esquece de avisar ai.. a que pé tá o seu projeto..
PROTEUS [ADSUMUS]
ETERNAL ########
---------------------------------------------------------------
"Já dizia o mestre: PROGRAMAR é diferente de CODIFICAR"...

#9 nelson8000

nelson8000

    Turista

  • Usuários
  • 53 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Programação, Fotos ....

Posted 11/06/2004, 10:11

kra... desculpa..

mas naum entendi uma virgula...

Abraços


Nelson
P.N.E.O.Q.E.A.V.

#10 proteus_adi

proteus_adi

    @handle:=proteus;//>>>

  • Usuários
  • 309 posts
  • Sexo:Não informado
  • Localidade:Minas Gerais>> Belo Horizonte
  • Interesses:Programação e Web>>>

Posted 11/06/2004, 14:00

copia o codigo pra uma query... e coloque-a como dataset do seu report...
depois nos campos do detail coloca tudo com o dataset desta mesma query...
Query1.SQL.clear;
Query1.SQL.Text:=
concat('SELECT  FORMAT(DATA, ''MM/YYYY'')',
               {a vencer}
               ' (Select sum(valor) as vencer',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''vencer'')  as vencer',
               { em atraso}
               ' (Select sum(valor) as atraso',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''atraso'')  as atraso',
               {banco}
               '(Select sum(valor) as banco',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''banco'')  as banco',
               {banco Juros}
               ' (Select sum(valor) as bancoJR',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''bancoJR'')  as bancoJR',
               {cob 1}
               ' (Select sum(valor) as cob1',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''cob1'')  as cob1',
               {cob 1 jr}
               ' (Select sum(valor) as cob1JR',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''cob1JR'')  as cob1JR',
               {cob 2}
               ' (Select sum(valor) as cob2',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''cob2'')  as cob2',
               {cob 2 jr}
               ' (Select sum(valor) as cob2JR',
               ' from tblCobTilt sec',
               ' where  sec.FORMAT(DATA, ''MM/YYYY'') = pri.FORMAT(DATA, ''MM/YYYY'')',
               ' and empresa  = ',  QuotedStr(edtEmpresa.text) ,
        ' and escola   = ',  QuotedStr(edtescola.Text),
        ' and conta    = ',  QuotedStr(edtConta.Text),
        ' and situacao = ''cob2JR'')  as cob2JR',

  ' FROM tblCobTilt pri',
  ' where format(data, ''YYYY'') =',QuotedStr(eddata.text),
  ' group by chave_ope');
query1.open;
//agora o que não dá pra entender eh

situacao like '+#39+'%'+(vencer.Text)+'%'+#39'

eu estou partindo do pensamento de que a situação possue valores padrões como 'vencer' , 'cobrar', 'inativo'.... outra situação pra mim não faz sentido..
apesar de que acho que sua estrutura de dados esta meio confusa...
se não for isso que vc tá querendo será que dá pra vc colocar ai a estrutura da sua tabela.. a descrição dos campos e a finalidade dos...
tudo ESCRITO... bonitinho...
ai vai ser mais facil entender....
PROTEUS [ADSUMUS]
ETERNAL ########
---------------------------------------------------------------
"Já dizia o mestre: PROGRAMAR é diferente de CODIFICAR"...

#11 nelson8000

nelson8000

    Turista

  • Usuários
  • 53 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Programação, Fotos ....

Posted 12/06/2004, 12:26

isso foi uma ganbiarra q outro cara fez..

o texto dessa edit eh "A Vencer"

vou fazer um teste com esse código e depois te falo a resposta..


sobre o outro post.. da data atual..

funcionou certinho...

Obrigado..

Abraços

Nelson
P.N.E.O.Q.E.A.V.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq