Fórum Usar UDF para Formatar campos p/ ´#0.00´ (Interbase) #39372
11/10/2003
0
library ConvertDin;
uses
SysUtils,
Classes;
{$R *.RES}
function Din(din : currency): currency; export;
begin
Result := strtofloat(FormatFloat(´0.00´, din));
end;
exports
Din;
begin
endQuando executo no interactive SQL do IBConsole o sequinte codigo:
Select din(ValorFatu) from Pedido
Ele exibi a todos so registros, só que com valores iquais e muito superior a qualquer valor contido naquela Coluna.
Dados:
Minha Udf foi declarada no interbase:
DECLARE EXTERNAL FUNCTION DIN FLOAT RETURNS FLOAT BY VALUE ENTRY_POINT ´Din´ MODULE_NAME ´ConvertDin.dll´;
´ValorFatu´ é um campo float
Para ficar claro, meu objetivo é fazer uma consulta e os dado que corresponde ao dinheiro como, valor e preço de produtos, fossem exibidos no formato ´0.00´. Ex.: valores como
10,215485124 e 65,51884181 para 10,22 e 65,52.
Foi me sujerido dicas para no proprio delphi fazer essa formatação. Mas minhas consultas exibem seu dados em DBGrids ligados à uma Query que a mesma faz varias consultas(Query que não pode ter nehuma propriedade definida em tempo criação). Outra dica foi a criação de UDF que tento agora fazer com dificuldades ditas acima.
Peço ajuda.
e agradeço desde já
Marbravo
Marbravo
Curtir tópico
+ 0Posts
11/10/2003
Afarias
pega um currency e retorna um currency ??!!! e??? Valores numéricos *NÃO* são armazenados com formatação em lugar nenhum!!!
Vc não precisa de qualquer UDF, apenas defina a formatação desejada na propriedade DisplayFormat do TField que representa seu campo!!
Ou use a função FormatFloat!!
T+
Gostei + 0
12/10/2003
Marbravo
Query.Fieldbyname(´Campo´).displayformat := ´0,00´;
Nem Compila.
I ai?
O que está errado?
Obrigado
Marbravo
Gostei + 0
13/10/2003
Afarias
T+
Gostei + 0
13/10/2003
Marbravo
Query.Fieldbyname(´Campo´).displayformat := ´0,00´;
A msg de erro é:
Undeclared identifier: ´DisplayFormat´
FormatFloat num pode por que exibi em uma dbgrid, ou pode?
Obrigado
MarBravo
Gostei + 0
13/10/2003
Afarias
O erro q aparece do compilador é justamente pq a classe TField não possui a propriedade DisplayFormat, vc deve fazer por ex::
(Query.Fieldbyname(´Campo´) as TNumericField).DisplayFormat := ´0,00´;
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)