Casas decimais diferentes em um mesmo relatorio c/ Quick Rep
Tenho uma query com os campos PRODUTO, UNIDADE, VALOR, sendo que a unidade varia de Kg, g, m, h, ton e muitos outros. Gostaria que no relatório as casas decimais do VALOR fosse diferente conforme o campo UNIDADE. Ex. Produto A - Unid. Kg - Valor 10,88 // Produto B - Unid. ton - Valor 11,891 - Produto C - Unid. g - Valor 0,8895.
Lazaro Capel
Curtidas 0
Respostas
Aroldo Zanela
09/07/2003
#,,.
GOSTEI 0
Lazaro Capel
09/07/2003
#.., realmente parace ser fácil ou até pode não ser díficil
mas . . . oque realmente preciso saber é como mudar de mascara a cada linha do relatório, variando conform o cadastro do produto que esta sendo listado.
mas . . . oque realmente preciso saber é como mudar de mascara a cada linha do relatório, variando conform o cadastro do produto que esta sendo listado.
GOSTEI 0
Kfe
09/07/2003
O campo valor deve ser do tipo numérico. Então faça o seguinte:
Ponha um qrlabel na detail banda
no evento before print faça o seguinte:
if datasetUNIDADE.value=´kg´ then
qrlabel1.caption:=formatfloat(´mascaraKG´,datasetVALOR.value)
else
if datasetUNIDADE.value=´g´ then
qrlabel1.caption:=formatfloat(´mascaraG´,datasetVALOR.value)
e assim por diante. Só não esqueça de trocar onde está mascararKG pela mascara de kilograma (#,0.00 ou a que vc escolher)
Espero qeui ajude
até mais
Ponha um qrlabel na detail banda
no evento before print faça o seguinte:
if datasetUNIDADE.value=´kg´ then
qrlabel1.caption:=formatfloat(´mascaraKG´,datasetVALOR.value)
else
if datasetUNIDADE.value=´g´ then
qrlabel1.caption:=formatfloat(´mascaraG´,datasetVALOR.value)
e assim por diante. Só não esqueça de trocar onde está mascararKG pela mascara de kilograma (#,0.00 ou a que vc escolher)
Espero qeui ajude
até mais
GOSTEI 0
Jairroberto
09/07/2003
Olá, LazaroCapel!
Seguindo os conselhos de alguns desenvolvedores experientes, sempre dou preferência por manter as regras de negócio separadas da camada de exibição e manipulação das informações. Sendo assim, acho mais adquado escrever a rotina de exibição do valor em um lugar que seja acessível tanto para o relatório como para o DBEdit ou DBGrid do formulário de exibição e entrada de dados, ou mesmo para a rotina de exportação.
Por isso, acho bastante conveniente, neste caso, usar o evento [b:0863ae2166]OnGetText[/b:0863ae2166] do objeto TField que representa o campo VALOR. Este evento ocorre sempre que o campo precisa ser exibido. Veja um exemplo:
Os parâmetros recebidos pelo evento são:
Sender: TField = objeto correspondente ao campo cujo texto de exibição deve ser retornado
var Text: String = string à qual deverá ser atribuído o texto de exibição desejado
DisplayText: Boolean = indica se o evento deve retornar a propriedade DisplayText (formatado pela máscara informada em DisplayMask ou EditFormat) ou AsString do campo
Um abraço,
Jair
Seguindo os conselhos de alguns desenvolvedores experientes, sempre dou preferência por manter as regras de negócio separadas da camada de exibição e manipulação das informações. Sendo assim, acho mais adquado escrever a rotina de exibição do valor em um lugar que seja acessível tanto para o relatório como para o DBEdit ou DBGrid do formulário de exibição e entrada de dados, ou mesmo para a rotina de exportação.
Por isso, acho bastante conveniente, neste caso, usar o evento [b:0863ae2166]OnGetText[/b:0863ae2166] do objeto TField que representa o campo VALOR. Este evento ocorre sempre que o campo precisa ser exibido. Veja um exemplo:
procedure TForm1.Query1VALORGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if DisplayText then begin if Query1UNIDADE.AsString = ´Kg´ then Text := FormatFloat(´,0.00´, Sender.AsFloat) else if Query1UNIDADE.AsString = ´ton´ then Text := FormatFloat(´,0.000´, Sender.AsFloat) else if Query1UNIDADE.AsString = ´g´ then Text := FormatFloat(´,0.0000´, Sender.AsFloat) else Text := Sender.AsString; end else Text := Sender.AsString; end;
Os parâmetros recebidos pelo evento são:
Sender: TField = objeto correspondente ao campo cujo texto de exibição deve ser retornado
var Text: String = string à qual deverá ser atribuído o texto de exibição desejado
DisplayText: Boolean = indica se o evento deve retornar a propriedade DisplayText (formatado pela máscara informada em DisplayMask ou EditFormat) ou AsString do campo
Um abraço,
Jair
GOSTEI 0