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

(Resolvido) Qrexpr


Eder

Pergunta

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 para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 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
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...