PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → problème de requête
problème de requête
Iniciado por patrick39220, 29,mar. 2019 07:36 - 13 respuestas
Publicado el 29,marzo 2019 - 07:36
Bonjour à tous,
Débutant sous windev, je rencontre un problème avec une requête :
Lors que j’exécute la requête sous l’éditeur de requête, elle fonctionne très bien, elle me donne le résultat voulue[ par contre dans mon programme, elle ne fonctionne plus !!!
Voici le code de ma requête :
SELECT
Vin.IDVin AS IDVin,
Vin.NomVin AS NomVin,
Vin.AnneeVin AS AnneeVin,
Vin.PrixVin AS PrixVin,
Vin.QuantVin AS QuantVin,
Vin.Cotation AS Cotation,
Vin.PhotoVin AS PhotoVin,
Vin.Commentaire AS Commentaire,
Vin.Garde AS Garde,
Vin.IDAppelation AS IDAppelation,
Vin.IDProducteur AS IDProducteur,
Vin.IDCouleur AS IDCouleur,
Vin.IDRegion AS IDRegion,
Vin.IDPays AS IDPays,
Vin.DateAchat AS DateAchat,
Vin.Entree AS Entree,
Vin.Sortie AS Sortie,
Couleur.IDCouleur AS IDCouleur1,
Couleur.NomCouleur AS NomCouleur,
Couleur.ImageCouleur AS ImageCouleur,
Appelation.IDAppelation AS IDAppelation1,
Appelation.NomAppelation AS NomAppelation,
Region.IDRegion AS IDRegion1,
Region.NomRegion AS NomRegion
FROM
Vin,
Couleur,
Appelation,
Region
WHERE
Vin.IDCouleur = Couleur.IDCouleur
AND Appelation.IDAppelation = Vin.IDAppelation
AND Region.IDRegion = Vin.IDRegion
AND
(
Appelation.IDAppelation = {ParamIDAppellation}
AND Couleur.IDCouleur = {ParamIDCouleur}
AND Region.IDRegion = {ParamIDRegion}
AND Vin.AnneeVin = {ParamAnneeVin}
)

Et voici le code dans mon programme :
SI Combo_Appellation ~= "" ET SAI_Date ~= "" ET Combo_Region ~= "" ET Combo_Couleur ~= "" ALORS

//Vérification de la saisie utilisateur -> alerte si l'utilisateur n'a pas saisi de critères de recherche
//AfficheErreur(LIB_Erreur,"Indiquez un paramètre de recherche")
ToastAffiche("Indiquez un paramètre de recherche")
RETOUR

SINON
//Lancement de la recherche

Req_RechercheVin.ParamIDAppellation = Combo_Appellation
Req_RechercheVin.ParamAnneeVin = SAI_Date
Req_RechercheVin.ParamIDCouleur = Combo_Couleur
Req_RechercheVin.ParamIDRegion = Combo_Region

HExécuteRequête(Req_RechercheVin)
HLitPremier(Req_RechercheVin)

SI HEnDehors ALORS
ToastAffiche("Aucun résultat trouvé")
SINON
ToastAffiche("1 enregistrement trouvé !!")
FIN

FIN

La requête me donne toujours comme résultat : Aucun résultat trouvé

Je vous remercie par avance de m'aider

Patrick
Miembro registrado
2.682 mensajes
Publicado el 29,marzo 2019 - 08:57
Bonjour,

As-tu mis un point d'arrêt pour voir ce que contiennent tes paramètres ?

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
1.640 mensajes
Publicado el 29,marzo 2019 - 10:02
Hello,

A vérifier mais Combo_Couleur a mon avis renvoi l'indice de l’élément en cours et non sa valeur, essaye avec Combo_Couleur..ValeurAffichée ou Combo_Couleur..ValeurMémorisée (selon le cas)
Ca doit etre pareil pour les autres combo
Mensaje modificado, 29,marzo 2019 - 10:02
Publicado el 29,marzo 2019 - 10:12
Bonjour Philippe,

J'ai bien mis un point d’arrêt sur mes variable, et elles ont la valeur voulue !
Publicado el 29,marzo 2019 - 10:14
Bonjour François,

La variable couleur ( par exemple) a pour valeur l'indice de celle ci ( valeur souhaité).
En testant : HExécuteRequête(Req_RechercheVin,Combo_Appellation,SAI_Date,Combo_Couleur,Combo_Region) cela ne change rien à mon problème !
Publicado el 29,marzo 2019 - 10:14
Bonjour François,

La variable couleur ( par exemple) a pour valeur l'indice de celle ci ( valeur souhaité).
En testant : HExécuteRequête(Req_RechercheVin,Combo_Appellation,SAI_Date,Combo_Couleur,Combo_Region) cela ne change rien à mon problème !
Miembro registrado
2.682 mensajes
Publicado el 29,marzo 2019 - 12:58
quel est le retour de HExecuteRequete ?

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
2.321 mensajes
Publicado el 29,marzo 2019 - 13:34
Bonjour,

Pour identifier l'origine du problème, il faut testé le code morceau par morceau.
Donc :
1. Le code SQL avec les valeurs en dur.
2. Le code avec les valeurs passées par paramètre comme dans l'éditeur de requête,
3. Enfin utiliser les valeurs renvoyées par les combos en paramètres.

--
Bon dev,
Jean-Pierre
Publicado el 29,marzo 2019 - 15:14
re bonjour,

je n'ai pas de retour avec HExecuteRequete , car je n'ai pas d'erreur d’exécution de ma requête


Pour Jean-pierre :,

1. Le code SQL avec les valeurs en dur : même problème !
2. Le code avec les valeurs passées par paramètre comme dans l'éditeur de requête
3. Enfin utiliser les valeurs renvoyées par les combos en paramètres.
Pour le point 2 et 3, pouvez vous me donner un exemple car je ne comprend pas ce que vous voulez dire....
--
Cordialement
Patrick
Miembro registrado
1.640 mensajes
Publicado el 29,marzo 2019 - 16:54
Exemple :

Req_RechercheVin.ParamIDAppellation = Combo_Appellation
Req_RechercheVin.ParamAnneeVin = SAI_Date
Req_RechercheVin.ParamIDCouleur = Combo_Couleur
Req_RechercheVin.ParamIDRegion = Combo_Region


Si tu mets ca juste avant :
Trace(Combo_Couleur)
Trace(Combo_Region)
Trace(Combo_Appellation)
Trace(SAI_Date)

Les valeurs tracées sont bien celles attendues ?
Mensaje modificado, 29,marzo 2019 - 16:54
Publicado el 29,marzo 2019 - 17:30
Re bonjour,

Voici une capture d'ecran sous l'editeur de requete :





et voici le résultat :




Ceci montre bien que la requête fonctionne !!

Par contre en programmation, même avec les bonne valeur dans les variables, cela ne fonctionne pas.
Que la valeur soit vrai ou fausse, j'ai toujours le même message : "Aucun résultat trouvé".
J'avoue que je suis perdu !!!!

Cordialement
Patrick
Publicado el 02,abril 2020 - 21:36
Quand dans l'éditeur de requêtes tu ne coches pas un des paramètres ca équivaut a passer null et non une chaine vide comme tu le ferais avec tes combos.
Miembro registrado
4.362 mensajes
Publicado el 03,abril 2020 - 09:47
Bonjour,
Si tous les paramètres ne sont pas saisis, ils sont à 0 où à "".
Donc, tu peux être amené à rechercher un vin récolté en "0", à mon avis, il n'y en a pas beaucoup
Il faut penser à cocher "Null si vide" dans la description du champ, option Détail.

--
Il y a peut être plus simple, mais, ça tourne
Publicado el 03,abril 2020 - 14:32
Bonjour

il faut que les paramètres de la requête soient initialisés à null s'ils ne doivent pas servir :

par correspondre à l'exemple qui fonctionne dans l'éditeur de requête :
Req_RechercheVin.ParamIDAppellation = null
Req_RechercheVin.ParamAnneeVin = null
Req_RechercheVin.ParamIDCouleur = 2
Req_RechercheVin.ParamIDRegion = null

Bon dev