Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
salut
en bref , dans ma bse j'ai les champs suivants:
montant ....
montant1 compute(if mois =1 then montant endif)
montant2 compute(if mois =2 then montant endif)
.
.
.
montant12 compute(if mois =12 then montant endif)
je parle de la compute au niveau de la base SQLANYWHERE et pas dans la datawindow object
le "montant" est un champ calculé selon la valeur du mois
si le mois=12 par exemple le montant11 recois NULL le if retourne null
comment faire pour eviter le 'NULL'?
je veux bien que le champ montant11 garde sa valeur sans modification si on recalcule le montant selon le mois 12
je souhaite que je j'ai bien expliqué
merci d'avance
Dernière modification par azuldev (17-02-2010 14:26:50)
Hors ligne
Bonjour, je ne me souviens pas de la syntaxe SQLAnywhere, mais je présume qu'il faut rajouter un Else zéro :
"if mois =2 then montant ELSE 0 endif"
Ou alors j'ai pas bien compris l'objectif, tes explications ne sont pas des plus claires...
Hors ligne
Bonjour,
On peut également utiliser la fonction ISNULL en SQLANYWHERE qui retourne la première expression non "null" de la liste des paramètres :
ISNULL(if mois =1 then montant endif, 0)
Hors ligne
salut
merci
mais si je rajoute else la valeur precedente prendra la valeur 0 or je veux bien la garder .
Hors ligne
OK, tu peux expliquer exactement ce que tu attends comme résultats ?
Hors ligne
salut
si le mois = 1 le montant =100 et je stoke la valeur du montant (100) dans montant1 alors montant1 = 100
si le mois = 2 le montant =300et je stoke la valeur du montant (300) dans montant2 alors montant1 = 300
.
.
.
le stokage de la valeur du montant dans les champs montant1, montant2..... cefait au niveau de la base via l'expression ds le compute (if mois = 1 then montant endif)
si le mois =1 la valeur du montant1 =100
mais quand le mois = 2 la valeur du montant2=300 alors que la valeur du montant1 recoie NULL
en generale si le mois = n les montants montantx<>n recoie NULL
et j'attends comme resultat le montant1 garde sa valeur 100 si le mois =2 ou 3 ,5.....
le montant2 garde sa valeur 300 si le mois est diff de 2 etc
merci
Hors ligne
je comprends pas trop la structure de la table de ta base de donnees
si j'ai bien compris tu a une table avec 12 champs mois/montant
et tu enregistres 12 enregistrements - 1 par mois
pourquoi ne pas faire :
1 enreg pour les 12 mois
ou un table avec un seul montant et le numero du mois ?
cependant
fait 12 select avec 11 union : cela devrait fonctionner
Hors ligne