Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Qrexpr


Eder

Question

Ola...pessoal.

Eu tou usando no OnPrint do QrExpr1 este codigo:

LitrosBomba:=strtofloat(value);
no QrExpr2 este codigo:
LitrosAbaste:=strtofloat(value);
e em outro Qrexpr o total que ficaria assim:
Value:='Saldo do Período: '+floattostr(LitrosBomba - LitrosAbaste)+' Litros';

Estas variaveis acima são Globais.

até aqui tudo bem..funciona...

o problema é que eu gostaria de formatar estes resultados que vão aparecendo nestes Qrexpr pois estão saindo tipo assim: 999555,21

eu gostaria de formatar assim: 999.555,21 (com o ponto).

até coloquei na mascara dos qrexpr...mas ai da erro quando são acionadas as variaveis..

Como eu resolveria este problema??

Grato

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0
Eu tou usando no OnPrint do QrExpr1 este codigo:

LitrosBomba:=strtofloat(value);
no QrExpr2 este codigo:
LitrosAbaste:=strtofloat(value);
e em outro Qrexpr o total que ficaria assim:
Value:='Saldo do Período: '+floattostr(LitrosBomba - LitrosAbaste)+' Litros';

Estas variaveis acima são Globais.

Eder, a propriedade Mask serve apenas para formatar a saída quando o "valor" (resultado) do seu QRExpr é apenas numérico.

Caso você tenha utilizado estas variáveis globais apenas para montar o resultado no seu último QRExpr (pela contrução, não parece uma totalização), então acho que uma sugestão mais "limpa" poderia ser você utilizar a propriedade Value dos expressions para calcular o valor total. Assim, você não interceptaria os eventos para os dois primeiros expressions, apenas o último. Exemplificando:

QRExpr.Value.dblResult := QRExpr1.Value.dblResult - QRExpr2.Value.dblResult;

isto poderia ser realizado no BeforePrint da banda onde estes expressions estão; Em teoria, funciona corretamente. Teste. ;)

mas como você pretende colocar o resultado e uma frase, o exemplo do Jhonas (para esta parte) deve funcionar parcialmente pois falta informar a precisão (casas decimais):

Value := 'Saldo do Período: '+format(%.2n,[LitrosBomba - LitrosAbaste])+' Litros';

Juntando isto ao que coloquei antes,

Value := 'Saldo do Período: '+format(%.2n,[QRExpr1.Value.dblResult - QRExpr2.Value.dblResult])+' Litros';

Se você precisar mostrar o separador de milhar, então vai ter que fazer uso da função FormatFloat.

A título de sugestão, para este último resultado um QRLabel já serviria, não há necessidade de ser um QRExpr (isso é opcional)

Abraços

Link to comment
Share on other sites

  • 0

Ola.

Eder, a propriedade Mask serve apenas para formatar a saída quando o "valor" (resultado) do seu QRExpr é apenas numérico.
R.: ok

Caso você tenha utilizado estas variáveis globais apenas para montar o resultado no seu último QRExpr (pela contrução, não parece uma totalização), então acho que uma sugestão mais "limpa" poderia ser você utilizar a propriedade Value dos expressions para calcular o valor total. Assim, você não interceptaria os eventos para os dois primeiros expressions, apenas o último. Exemplificando:

QRExpr.Value.dblResult := QRExpr1.Value.dblResult - QRExpr2.Value.dblResult;

isto poderia ser realizado no BeforePrint da banda onde estes expressions estão; Em teoria, funciona corretamente. Teste.

R.: Carinha deu erro

[Error] Bomba_Res.pas(168): Left side cannot be assigned to

Micheus....o relatorio esta assim:

tem um qrexpr2 numa banda que recebe um valor

tem outro QrExpr24 que esta numa OUTRA band que recebe outro valor

então eu teria que colocar o resultado num QrLabel ou QrExpr que me mostre na teoria assim:

QrLabelResultado.caption:=QrExpr2 - QxExpr24

e o formato teria que ser assim: 1.252.352,20

Valeu muito grato

Link to comment
Share on other sites

  • 0
QRExpr.Value.dblResult := QRExpr1.Value.dblResult - QRExpr2.Value.dblResult;

isto poderia ser realizado no BeforePrint da banda onde estes expressions estão; Em teoria, funciona corretamente. Teste.

R.: Carinha deu erro

[Error] Bomba_Res.pas(168): Left side cannot be assigned to

por isso que eu disse "teoricamente" e "teste". :rolleyes:

Isso significa que não é possível atribuir algum valor a QRExpr.Value.dblResult.

então eu teria que colocar o resultado num QrLabel ou QrExpr que me mostre na teoria assim:

QrLabelResultado.caption:=QrExpr2 - QxExpr24

e o formato teria que ser assim: 1.252.352,20

que era a outra opção que falei: QRLabel + FormatFloat.

Com a possibilidade de utilizar o QRLabel para mostrar, você poderia tentar fazer:

var 
  Valor :Double;
begin
  QrLabelResultado.caption :=  FormatFloat('Saldo do Período: #,###,##0.00 litros', QRExpr1.Value.dblResult - QRExpr2.Value.dblResult);
end;

quanto mais pontos de milhar precisar a frente, basta acrescentar "###,". Com esta formatação, a única coisa certa é que você terá 1 casa antes da vírgula e 2 após dela (são ref. aos zeros que você vê), o resto será ajustado conforme necessário.

por exemplo:

1050,5 formatado assim: FormatFloat('Saldo do Período: #,###,##0.00 litros', 1050.5);

resulta em: "Saldo do Período: 1.050,50 litros"

Abraços

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...