Fórum função: se nulo retorna algo #326967

08/08/2006

0

que função no delphi equivale ao coalesce no firebird?

ou seja, qual função posso utilizar para que caso o valor seja nulo então retornar algum valor que eu queira?
ex:
  field.value := nomefuncao(field2.value, 0);

isso quer dizer que caso field2.value seja nulo, será atribuido o valor zero ao campo field


Raserafim

Raserafim

Responder

Posts

08/08/2006

Marco Salles

voce pode usar a função Ifthen do delphi... ela é uma versão sobrecarregada

exemplo de uso

R:=itThen(condicao,R1,R2)

se a condição for verdadeira R:=R1 . se acondição for falsa R:=R2

aonde R,R1,R2 pode ser String ou R,R1,R2 pode ser inteiro


Responder

Gostei + 0

08/08/2006

Mrmarcelojr

Só pra completar, se esse teu campo for de algum tipo número (Real ou Integer), vc pode usar o FormatFloat.

Exempolo:
 Var:=FormatFloat(´0.00´;´NEGATIVO´;´ZERO´,Valor);


veja que foi passado 3 parametros: ...´0.00´;´NEGATIVO´;´ZERO´...; ou seja, se o Valor for positivo, ele passa o valor com a formatação 0.00, e for negativo, recebe a palavra NEGATIVO, e se for 0, recebe a palavra ZERO.

Claro q ele retorna isso em String, mas dai vc manipula isso como vc quiser.


?:]


Responder

Gostei + 0

08/08/2006

Jáder Medeiros

O Delphi não tem uma função dessa pronta. Vai uma que eu fiz:

Function Nvl(pValue,IfNull: Variant): Variant;
begin
if pValue = Null then
Result := IfNull
else
Result := pValue
end;


Não esqueça de usar a Unit Variants.


Responder

Gostei + 0

08/08/2006

Dmalta

Continuando a brincadeira... O padrão SQL ANSI permite um número qualquer de parâmetros na função COALESCE, não apenas dois. As rotinas abaixo suportam os dois tipos de uso:

function Coalesce(Value1: Variant; Value2: Variant): Variant; overload;
begin
  if not VarIsNull(Value1) then
    Result := Value1
  else
    Result := Value2
end;

function Coalesce(Values: array of Variant): Variant; overload;
var
  i: Integer;
begin
  for i := Low(Values) to High(Values) do
  begin
    Result := Values[i];
    if not VarIsNull(Result) then Break;
  end;
end;

Dessa forma você pode usar: Coalesce(A, B) ou Coalesce([A, B, C, D]).

:D


Responder

Gostei + 0

10/08/2006

Raserafim

valeu pessoal,
mas acho q vou ficar com a sugestão de marco salles.

o dmalta acabou me esclareceu uma coisa: passar vários parâmetros.

e a de marcelojr tb vai me ser útil.


Responder

Gostei + 0

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

Aceitar