função: se nulo retorna algo
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:
isso quer dizer que caso field2.value seja nulo, será atribuido o valor zero ao campo field
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
Curtidas 0
Respostas
Marco Salles
08/08/2006
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
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
GOSTEI 0
Mrmarcelojr
08/08/2006
Só pra completar, se esse teu campo for de algum tipo número (Real ou Integer), vc pode usar o FormatFloat.
Exempolo:
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.
?:]
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.
?:]
GOSTEI 0
Jáder Medeiros
08/08/2006
O Delphi não tem uma função dessa pronta. Vai uma que eu fiz:
Não esqueça de usar a Unit Variants.
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.
GOSTEI 0
Dmalta
08/08/2006
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:
Dessa forma você pode usar: Coalesce(A, B) ou Coalesce([A, B, C, D]).
:D
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
GOSTEI 0
Raserafim
08/08/2006
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.
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.
GOSTEI 0