Eder Postado Junho 9, 2006 Denunciar Share Postado Junho 9, 2006 Ola...Pessoal...eu tenho estes dois qrexpr do quick reportqrexp1 com esta expressão abaixo:(SUM(query1.peso) * 1000) / SUM(query1.FreteKelTotal)qrexp2 com esta expressão abaixo:(SUM(query1.peso) * 1000) / SUM(query1.FreteRed)até aqui tudo bem...eles me trazem o valor esperadoo problema é agora...eu preciso diminuir o valor do qrexp2 - o valor do qrexp1Tentei assim na expressão: sum(qrexpr2) - sum(qrexpr1)mas o resultado sai em branco alguém poderia me ajudar??Grato Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 13, 2006 Denunciar Share Postado Junho 13, 2006 Caso você ainda não tenha resolvido o problema ...sum(qrexpr2) - sum(qrexpr1)Eder, que eu saiba não dá mesmo. Quando preciso de algo parecido, coloco um QRLabel na banda em que esse resultado deve ser impresso e no OnBeforePrint da banda faço o somatório. Seria assim:procedure ....BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin QRLabel1.Caption := FormatFloat('#,##0.00', QRExpr2.Value.dblResult -QRExpr1.Value.dblResult); end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Junho 13, 2006 Autor Denunciar Share Postado Junho 13, 2006 amigão..beleza...carinha...fiz do seu jeito mas o resultado da 0,00fiz assim coloquei no qrexpr1=expression=20e qrexpr2=expression=30diminuindo deveria dar 10não é?? :( Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 14, 2006 Denunciar Share Postado Junho 14, 2006 fiz do seu jeito mas o resultado da 0,00fiz assim coloquei no qrexpr1=expression=20e qrexpr2=expression=30diminuindo deveria dar 10não é??Utilizando o exemplo que postei anteriormente, pergunto:- o compenente QRLabel1 está na mesma banda que os QRExpr? se não estiver, deverá estar.- indiferente ao somatório das expressões, na banda em que os QRExpr estão, eles imprimindo o valor esperado?é um pouco difícil dar outros palpites sem ter a real ideia de como você estruturou seu relatório (bandas que utiliza, localização dos componentes nestas bandas, ...) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Junho 14, 2006 Autor Denunciar Share Postado Junho 14, 2006 o compenente QRLabel1 está na mesma banda que os QRExpr? se não estiver, deverá estar.sim esta...estou apenas estudando este componente..aprendendo a utiliza-loeu mudei o seu codigo coloquei ao invés do DBLResult coloquei INTResult ficando assim:QRLabel2.Caption := FormatFloat('#,##0.00', QRExpr2.Value.INTResult -QRExpr1.Value.INTResult);ai deu certo...mas somente com numeros inteiros...se eu usar o 50,30 ai da erro....(hehehe não é inteiro né??)SERÁ PORQUE O DBL não da certo né???t+ :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 14, 2006 Denunciar Share Postado Junho 14, 2006 é uma boa pergunta.Não há possibilidade de ter algum valor nulo no resultado de sua query que possa por acaso estar gerando este problema - se bem que não parece que funcionaria com o INT, mas em todos os casos... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Junho 15, 2006 Autor Denunciar Share Postado Junho 15, 2006 amigo..a solução já achei fiz assim:unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Qrctrls, QuickRpt, ExtCtrls, StdCtrls;typeTForm1 = class(TForm)QuickRep1: TQuickRep;QRBand1: TQRBand;QRLabel1: TQRLabel;QRExpr1: TQRExpr;QRExpr2: TQRExpr;Button1: TButton;procedure QRLabel1Print(sender: TObject; var Value: String);procedure Button1Click(Sender: TObject);procedure QRExpr1Print(sender: TObject; var Value: String);procedure QRExpr2Print(sender: TObject; var Value: String);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;Teste : real; //variavel Teste1: real; //variavelimplementation{$R *.DFM}procedure TForm1.QRLabel1Print(sender: TObject; var Value: String);beginvalue := floattostr(teste + teste1); //PEGA O VALOR DO QREXP1 + QREXP2end;procedure TForm1.Button1Click(Sender: TObject);beginQUICKREP1.Prepare; //PREPARA.QUICKREP1.Preview; //MOSTRAend;procedure TForm1.QRExpr1Print(sender: TObject; var Value: String);beginteste := strtofloat(value); //PEGA O VALOR DO QREXPR1end;procedure TForm1.QRExpr2Print(sender: TObject; var Value: String);beginteste1 := strtofloat(value); //PEGA O VALOR DO QREXPR2end;end.Amigão..muito Grato pela Ajuda.t+ :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 16, 2006 Denunciar Share Postado Junho 16, 2006 amigão..beleza...carinha...fiz do seu jeito mas o resultado da 0,00fiz assim coloquei no qrexpr1=expression=20e qrexpr2=expression=30diminuindo deveria dar 10não é??Estive averiguando a situação.É interessante observar que há uma propriedade Kind (QRExpr.Value.Kind) que indica o tipo do resultado da expression (é somente leitura). No exemplo acima, você coloca em cada expression um valor inteiro; Embora eu acredite que ao utilizar a propriedade QRExpr.Value.dblValue deveria haver no método Get desta propriedade a devida conversão, o que ocorre na prática (acompanhe em depuração - debug) é que esta propriedade prossui um valor "bisonho" quando o valor da expressão é inteiro. Então, para não ter qualquer problema desse tipo, quando o resultado esperado é float, aconselho a multiplicar a expressão por 1.0. Isto fará com que o resultado seja um float e contornará este problema. Utilizando sua situação, a expressão ficaria assim:qrexp1 com esta expressão abaixo:(SUM(query1.peso) * 1000) / SUM(query1.FreteKelTotal) *1.0qrexp2 com esta expressão abaixo:(SUM(query1.peso) * 1000) / SUM(query1.FreteRed) *1.0Por favor, teste novamente com a primeira solução que lhe dei e verifique se estou correto no que digo (em meu teste ficou ok).p.s. o fato se repetiu no D3 com versão 2.0g do Quick Report e no D7 com a versão 3.5.0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eder
Ola...
Pessoal...eu tenho estes dois qrexpr do quick report
qrexp1 com esta expressão abaixo:
(SUM(query1.peso) * 1000) / SUM(query1.FreteKelTotal)
qrexp2 com esta expressão abaixo:
(SUM(query1.peso) * 1000) / SUM(query1.FreteRed)
até aqui tudo bem...eles me trazem o valor esperado
o problema é agora...
eu preciso diminuir o valor do qrexp2 - o valor do qrexp1
Tentei assim na expressão:
sum(qrexpr2) - sum(qrexpr1)
mas o resultado sai em branco
alguém poderia me ajudar??
Grato
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
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.