GARANTIR DESCONTO

Fórum Usar UDF para Formatar campos p/ ´#0.00´ (Interbase) #39372

11/10/2003

0

o codigo da Minha dll e o a seguir:

library ConvertDin;
uses
  SysUtils,
  Classes;

{$R *.RES}

function Din(din : currency): currency; export;
begin
  Result := strtofloat(FormatFloat(´0.00´, din));
end;
exports
   Din;

begin
end


Quando 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

Marbravo

Responder

Posts

11/10/2003

Afarias

cara... sua UDF *não* faz NADA!!

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+


Responder

Gostei + 0

12/10/2003

Marbravo

Quando Coloco, apos ter feito a consulta, depois do query.Open o Codigo:

Query.Fieldbyname(´Campo´).displayformat := ´0,00´;


Nem Compila.

I ai?

O que está errado?


Obrigado
Marbravo


Responder

Gostei + 0

13/10/2003

Afarias

Se tem algo errado deve haver então uma mensagem de erro do compilador... Só assim para saber o erro. então, qual a mensagem de erro??


T+


Responder

Gostei + 0

13/10/2003

Marbravo

Quando uso o codigo:

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


Responder

Gostei + 0

13/10/2003

Afarias

O método FieldByName() retorna um TField enquanto a propriedade DisplayFormat aparece apenas nas classes descendentes TNumericField e TDateTimeField.

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+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar