PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HF : case et isnull n'existe pas, comment les remplacer ?
HF : case et isnull n'existe pas, comment les remplacer ?
Débuté par guchon13, 30 nov. 2005 20:06 - 4 réponses
Posté le 30 novembre 2005 - 20:06
il n'existe pas une commande CASE :

Voici un extrait de ma requete qui est composé de bcp de divisions ....
le but c'est de controler que l'on ne divise par 0, sinon cela entraine un KO

select CASE
when (STATS.LF_KO + STATS.LF_OK) = 0 then 0
when (STATS.LF_KO + STATS.LF_OK) > 0 then STATS.TROIS_PTS_OK / (STATS.LF_KO + STATS.LF_OK) * 100
end
......

ou une fonction ISNULL(valeur, valeur si nulle)

Merci de votre aide ...pour les remplacer
Posté le 30 novembre 2005 - 18:01
Salut

en windev le select case est
SELON condition
CAS Valeur:
CAS Valeur2:
FIN

Voir aide en ligne pour plus de détail

Mathieu
Posté le 01 décembre 2005 - 09:13
Bonjour,
possibilité avec un "UNION" dans la même requete :

select ..., STATS.TROIS_PTS_OK / (STATS.LF_KO + STATS.LF_OK) * 100
.... where (STATS.LF_KO + STATS.LF_OK) <> 0
UNION
select ..., 0
.... where (STATS.LF_KO + STATS.LF_OK) = 0

voir la DOC sur UNION
Salutations
Posté le 01 décembre 2005 - 09:43
Le Union est possible, mais dans mon cas, j'ai une 20aine de divisions ....donc imaginez la requete avec 20 UNION .... c'est pas génial niveau perf ...et maintenance de code.
ce devient ingérable.


Le SELON, je peux le mettre dans mon CODE SQL ? si oui ca serait génial ..sinon je suis toujours coincé !


Merci a vous tous


(je ne veux pas mettre un SELON dans mon code windev mais dans le code de la requete)
Posté le 02 décembre 2005 - 14:18
Pour ceux que ca interresse, j'ai detourné le pb.
Me requete me renvoie les données et je fais les calculs au moment de les afficher dans ma table.
Je peux donc controler que le diviseur n'est pas egal à 0 etc ...

Cela aurait ete bc plus simple SQL mais bon a priori cela n'existe pas.


Merci a ceux qui ont sacrifié un peu de temps pour me repondre !


Laurent