Re: Récupérer une valeur null d'une requête

Posté par drcharly93 le 13/1/2009 15:21:19
Bonjour,

Pour savoir si une requête ne renvoie aucune ligne il vous faut modifier votre code de la facon suivante:
De plus il semblerait que vous chercher le tarif d'un article, donc vous pouvez limiter vos recherche sur cet article seulement ce qui accéllera fortement votre traitement
PROCEDURE RequêteCoef(in_AR_Ref, inOut_reqCof est une source de donnees, out_NbEnr est un entier)

//Première requête affichant les prix de vente de la table F_ARTCLIENT pour l'article AR_REF
HExécuteRequêteSQL(inOut_reqCoef,hRequêteSansCorrection, "SELECT AC_PrixVen, AR_Ref FROM F_ARTCLIENT WHERE AR_Ref ='" + in_AR_Ref + "'")
//On vérifie que la requête contient des enregistrements
HLitPremier( inOut_reqCoef )  //Charge la requête
SI HNbEnr( inOut_reqCoef ) > 0 Alors
 //Une deuxième requête effectue le calcul entre le coef de la table F_ARTCLIENT et le prix d'achat de la table F_ARTICLE
 HExécuteRequêteSQL(inOut_reqCoef,hRequêteSansCorrection, "SELECT AC_Coef * AR_PrixAch FROM F_ARTICLE, F_ARTCLIENT WHERE F_ARTICLE.AR_Ref='" + inOut_reqCoef.AR_Ref + "'")
SINON
 //Sinon, si la première requête toujours, renvoie cette fois ci un résultat VIDE alors
 HExécuteRequêteSQL(inOut_reqCoef,hRequêteSansCorrection, "SELECT AC_PrixVen FROM F_ARTCLIENT WHERE AC_PrixVen ") //Requête dont le WHERE n'a pas d'égalité (ERREUR)
 HLitPremier( inOut_reqCoef )
 SI HNbEnr( in_Out_reqCoef ) > 0 Alors
  //Une troisième requête affiche le prix de vente de la table F_ARTICLE
  HExécuteRequêteSQL(inOut_reqCoef,hRequêteSansCorrection, "SELECT AR_PrixVen FROM F_ARTICLE WHERE AR_REF='" + in_AR_REF + "'")
 FIN
FIN
HLitPremier( inOut_reqCoef )
out_NbEnr = HNbEnr( inOut_reqCoef )
RENVOYER Vrai


J'ai changé les paramètres de la procédure ou il vous faudra passer en paramètre :
- 1 : la référence de l'article dont vous cherchez le prix
- 2 : une variable de source de données qui une fois sortie de la procédure contiendra l'enregistrement trouvé si il y a
- 3 : une variable de type entier qui renverra 0 si pas d'enregistrement trouvé ou 1 si l'enregistrement à été trouvé.

ATTENTION, une requête est erronée, non complète clause WHERE sans égalité

en espérant que cela vous permette d'avancer

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=18&topic_id=6088&post_id=24427