[résolu]Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Bonjour,
Le problème que je rencontre est assez particulier... Je remplis une table mémoire avec une requête mais le nombre d'enregistrement diffère selon qu'une partie de mon code(ci dessous) soit mis en commentaire ou non. En effet lorsque le code qui n'a rien à voir normalement avec le remplissage de la table est mis en commentaire j'obtiens toujours 5 enregistrements sinon ma table affiche 3 ou 5 enregistrements... pourquoi je ne sais pas... à vrai dire ç fait des heures que je suis dessus à tout essayer je comprend vraiment pas


Voici le fameux code fonctionnel car la partie en question est mise en commentaire :

Sablier()

QteBtl,QteCad,QteEmb,QteB2,QteB5,QteB10,QteB20,QteB50,QteCV8,QteCV12,QteCV18,QteAutres,QteBtlAutres sont des entiers=0
ValTemp1,ValTemp2,ValTemp3,ValTemp4 sont des Variants=Null
Letat,Letype,Lemotif sont des chaînes
Indice est un entier=0
SI COMBO_Rech_Famille..ValeurAffichée<>"" ALORS
ValTemp1=COMBO_Rech_Famille..ValeurAffichée
FIN
SI COMBO_Rech_Groupe..ValeurAffichée<>"" ALORS
ValTemp2=COMBO_Rech_Groupe..ValeurAffichée
FIN
SI COMBO_Rech_Etat..ValeurAffichée<>"" ALORS
ValTemp3=COMBO_Rech_Etat-1
FIN
SI COMBO_Rech_Type..ValeurAffichée<>"" ALORS
SI COMBO_Rech_Type=2 ALORS
ValTemp4=Vrai
SINON
SI COMBO_Rech_Type=3 ALORS
ValTemp4=Faux
FIN
FIN
FIN


TableSupprimeTout(TABLE_Demande)
//On parcours la requête correspondant à la recherche
HDésactiveFiltre(Demande_Des_Affectation)
Trace(COMBO_Rech_Produit+TAB+ValTemp1+TAB+COMBO_Rech_Emballage+TAB+COMBO_Rech_MP+TAB+ValTemp2+TAB+COMBO_Rech_SaisiPar+TAB+CHP_Rech_Periode1+TAB+CHP_Rech_Periode2+TAB+ValTemp4+TAB+COMBO_Rech_Site+TAB+ValTemp3+TAB+COMBO_Rech_CP)
HExécuteRequête(Req_Des_Affectations,hRequêteDéfaut,COMBO_Rech_Produit,ValTemp1,COMBO_Rech_Emballage,COMBO_Rech_MP,ValTemp2,COMBO_Rech_SaisiPar,CHP_Rech_Periode1,CHP_Rech_Periode2,ValTemp4,COMBO_Rech_Site,ValTemp3,COMBO_Rech_CP)
HLitPremier(Req_Des_Affectations)
TANTQUE PAS HEnDehors(Req_Des_Affectations)
//selon Req_Des_Affectations.Etat
// cas 1:
// Letat="Gazeux"
// cas 2:
// Letat="Liquide"
// cas 3:
// Letat="Solide"
// FIN
// si Req_Des_Affectations.Type ALORS
// Letype="Affectation"
// selon Req_Des_Affectations.Motif
// cas 1:
// lemotif="Nouveau besoin"
// cas 2:
// lemotif="Stock alerte"
// cas 3:
// lemotif="Réépreuve"
// FIN
// sinon
// Letype="Désaffectation"
// lemotif="Stock important"
// FIN
//
// //On regarde si le produit est un cadre
// si Req_Des_Affectations.NbBtl>1 ALORS
// selon Req_Des_Affectations.Emballage
// CAS "CV8":
// QteCV8+=Req_Des_Affectations.Qte
// CAS "CV12":
// QteCV12+=Req_Des_Affectations.Qte
// CAS "CV18":
// QteCV18+=Req_Des_Affectations.Qte
// autres CAS :
// QteAutres+=Req_Des_Affectations.Qte
// FIN
// //On s'occupe du nombre total d'emballages et de cadres
// QteCad+=Req_Des_Affectations.Qte
// QteEmb+=(Req_Des_Affectations.NbBtl*Req_Des_Affectations.Qte)
// sinon
// selon Req_Des_Affectations.Emballage
// cas "B2":
// QteB2+=Req_Des_Affectations.Qte
// cas "B5":
// QteB5+=Req_Des_Affectations.Qte
// CAS "B10":
// QteB10+=Req_Des_Affectations.Qte
// CAS "B20":
// QteB20+=Req_Des_Affectations.Qte
// CAS "B50":
// QteB50+=Req_Des_Affectations.Qte
// autres CAS :
// QtebtlAutres+=Req_Des_Affectations.Qte
// FIN
// //On s'occupe du nombre total de bouteilles et d'emballages
// QteBtl+=Req_Des_Affectations.Qte
// QteEmb+=Req_Des_Affectations.Qte
// FIN

TableAjoute(TABLE_Demande,Req_Des_Affectations.IDDemande_Des_Affectation+TAB+Req_Des_Affectations.Date+TAB+Req_Des_Affectations.DateLivraison+...
TAB+Req_Des_Affectations.Nom+TAB+Req_Des_Affectations.Emballage+TAB+Letat+TAB+Letype+TAB+Req_Des_Affectations.CentreProd+...
TAB+Req_Des_Affectations.Utilisateur+TAB+Lemotif+TAB+Req_Des_Affectations.Observations+TAB+Req_Des_Affectations.Traite+...
TAB+Req_Des_Affectations.Qte_EnCours+TAB+Req_Des_Affectations.Qte+TAB+Req_Des_Affectations.IDTraitant+TAB+Req_Des_Affectations.IDResponsable+...
TAB+Req_Des_Affectations.Qte_Ini)
HLitSuivant(Req_Des_Affectations)
FIN
HAnnuleDéclaration(Req_Des_Affectations)
TableAffiche(TABLE_Demande)

Sablier(Faux)




Merci d'avance pour votre aide

Contribution le : 18/05/2004 10:18
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Bon bah même en enlevant la mise en commentaire ça foire quand même mais à une fréquence moins élévée... c'est aléatoire c'est la merde.
Sinon pour info j'appelle cette procédure lors de la sélection d'une combo période.
Lors du débugage cela marche toujours...
Windev peut-il être mis en cause ??? (version 8.00 cKd)
Après le code d'affichage dans la table voici la requête à proprement parlé:


SELECT Demande_Des_Affectation.IDDemande_Des_Affectation AS IDDemande_Des_Affectation,
Demande_Des_Affectation.Etat AS Etat,
Demande_Des_Affectation.Date AS Date,
Demande_Des_Affectation.DateLivraison AS DateLivraison,
Demande_Des_Affectation.Qte AS Qte,
Demande_Des_Affectation.Qte_Initiale AS Qte_Ini,
Demande_Des_Affectation.Affectation AS Type,
Demande_Des_Affectation.Motif AS Motif,
Demande_Des_Affectation.Observations AS Observations,
Demande_Des_Affectation.Qte_EnCours AS Qte_EnCours,
Demande_Des_Affectation.Traitee AS Traite,
Demande_Des_Affectation.IDCentre_Production_Traitant AS IDTraitant,
Demande_Des_Affectation.IDResponsable AS IDResponsable,
Centre_Production.Nom AS CentreProd,
Produit.Nom AS Nom,
Emballage.Type AS Emballage,
Emballage.NbBouteilles AS NbBtl,
Utilisateur.Nom AS Utilisateur
FROM Produit, Demande_Des_Affectation, Utilisateur, Emballage,Centre_Production,
(SELECT DISTINCT IDProduit FROM Recette WHERE Recette.IDMatiere_Premiere = {Param4}) AS Recette
WHERE Produit.IDProduit = Demande_Des_Affectation.IDProduit
AND Produit.IDProduit = Recette.IDProduit
AND Utilisateur.IDUtilisateur = Demande_Des_Affectation.IDDemandeur
AND Emballage.IDEmballage = Demande_Des_Affectation.IDEmballage
AND Centre_Production.IDCentre_Production = Demande_Des_Affectation.IDCentre_Production
AND Produit.IDProduit = {Param1}
AND Produit.Famille LIKE {Param2}
AND Emballage.IDEmballage = {Param3}
AND Produit.Groupe LIKE {Param5}
AND Utilisateur.IDUtilisateur = {Param6}
AND Demande_Des_Affectation.Date BETWEEN {Param7} AND {Param8}
AND Demande_Des_Affectation.Affectation = {Param9}
AND Utilisateur.IDSite = {Param10}
AND Demande_Des_Affectation.Etat = {Param11}
AND Demande_Des_Affectation.IDCentre_Production = {Param12}
ORDER BY Date ASC

Contribution le : 18/05/2004 10:44
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour Gonzeub,

Je te conseille de procéder par élimination

Utilise l'éditeur de requête de WinDev et commence si nécessaire par une requête simple sans relation que tu test dans l'éditeur de requête afin de voir si l'éditeur te retourne un résultat sensé. Puis insère petit à petit la relation sur les fichier et test la cohérence.

ATTENTION au LIKE qui Il me semble ATTEND un % en fin de chaîne ainsi que le fait d'encadrer les chaîne de caractère par des cotes.
ATTENTION aussi au format des dates qui sont des chaînes de caractère au format AAAAMMJJ

Ce procédé afin de t'assurer que la requête est correct.

Dans la partie code procède de la même manière
Active les paramètres un à un et contrôle la cohérence.

Cela peut paraître barbare mais souvent on ce rend compte que l'erreur était bête simple mais noyé dans des lignes d'écriture.

Contribution le : 18/05/2004 11:35
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Slt DrCharly,

Comme tu me l'as conseillé j'ai vérifié un ptit peu tout ça et j'ai remplacé les 'LIKE' par '=' pour les seuls paramètres de type chaine de caractère.
Comme tu as pu le voir dans le code j'ai placé un trace de mes paramètres et ils sont tous équivalent à NULL sauf pour les dates qui sont de format AAAAMMJJ.
Le trace m'a perdu de remarquer que pour des paramètres identiques le résultat varie...
Je ne comprend vraiment pas là !!! lol

Contribution le : 18/05/2004 11:57
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745

Je remarque que lors de l'exécution de ta requête tous les paramètres envoyés à la requête ne sont pas tous du type variant, cela peut provoquer des résultats innatendus

Dans l'aide en ligne il est préconiser d'utiliser des Variants comme type de variable pour le passage de paramètre.
Exemple:
COMBO_Rech_Produit
COMBO_Rech_Emballage
COMBO_Rech_MP
etc...

Contribution le : 18/05/2004 12:41
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Ce ne sont pas des variables mais des champs combos reliés directement à un fichier et qui me renvoyent NULL si vide.
Le trace effectué me permet d'affirmer que des paramètres identiques envoyés à ma requête m'affichent une table avec un nombre d'enregistrement différents.
Je suis actuellement en train de télécharger la dernière version 3.14m pour voir ce qu'il en sera

Contribution le : 18/05/2004 13:12
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
La dernière version n'a pas eu l'effet escompté

Contribution le : 18/05/2004 13:27
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Voici un raccourci du problème rencontré.

Les valeurs affichées dans ma table mémoire grace à une requête diffèrent après sélection d'une combo.

Les paramètres passés dans le trace sont pour un affichage correct :
00000020040504200405180000
Les paramètres passés dans le trace sont pour un affichage incorrect :
00000020040504200405180000

On remarque que les paramètres sont identiques.

Voici le code:

Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9,Param10,Param11,Param12 sont des Variants=Null
//Préparation des paramètres
Param1=COMBO_Rech_Produit
SI COMBO_Rech_Famille..ValeurAffichée<>"" ALORS
Param2=COMBO_Rech_Famille..ValeurAffichée
FIN
Param3=COMBO_Rech_Emballage
Param4=COMBO_Rech_MP
SI COMBO_Rech_Groupe..ValeurAffichée<>"" ALORS
Param5=COMBO_Rech_Groupe..ValeurAffichée
FIN
Param6=COMBO_Rech_SaisiPar
Param7=CHP_Rech_Periode1
Param8=CHP_Rech_Periode2
SI COMBO_Rech_Etat..ValeurAffichée<>"" ALORS
Param9=COMBO_Rech_Etat-1
FIN
Param10=COMBO_Rech_Site
SI COMBO_Rech_Type..ValeurAffichée<>"" ALORS
SI COMBO_Rech_Type=2 ALORS
Param11=Vrai
SINON
SI COMBO_Rech_Type=3 ALORS
Param11=Faux
FIN
FIN
FIN
Param12=COMBO_Rech_CP


TableSupprimeTout(TABLE_Demande)
//On parcours la requête correspondant à la recherche
HDésactiveFiltre(Demande_Des_Affectation)
Trace(Param1+TAB+Param2+TAB+Param3+TAB+Param4+TAB+Param5+TAB+Param6+TAB+Param7+TAB+Param8+TAB+Param9+TAB+Param10+TAB+Param11+TAB+Param12)
HExécuteRequête(Req_Des_Affectations,hRequêteDéfaut,Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9,Param10,Param11,Param12)
HLitPremier(Req_Des_Affectations)
TANTQUE PAS HEnDehors(Req_Des_Affectations)
TableAjoute(TABLE_Demande,Req_Des_Affectations.IDDemande_Des_Affectation+TAB+Req_Des_Affectations.Date+TAB+Req_Des_Affectations.DateLivraison+...
TAB+Req_Des_Affectations.Nom+TAB+Req_Des_Affectations.Emballage+TAB+Letat+TAB+Letype+TAB+Req_Des_Affectations.CentreProd+...
TAB+Req_Des_Affectations.Utilisateur+TAB+Lemotif+TAB+Req_Des_Affectations.Observations+TAB+Req_Des_Affectations.Traite+...
TAB+Req_Des_Affectations.Qte_EnCours+TAB+Req_Des_Affectations.Qte+TAB+Req_Des_Affectations.IDTraitant+TAB+Req_Des_Affectations.IDResponsable+...
TAB+Req_Des_Affectations.Qte_Ini)
HLitSuivant(Req_Des_Affectations)
FIN
HAnnuleDéclaration(Req_Des_Affectations)
TableAffiche(TABLE_Demande)




Contribution le : 18/05/2004 14:06
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Sans vouloir insister, mais afin d'être sûr, les chaines et les dates doivent être encadrées par des quotes ' '
Exemple:

ParamX = "'" + 20040518 + "'"


Contribution le : 18/05/2004 16:49
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Euuhhh je ne fais pas ça...
Regarde l'exemple juste au dessus est assez clair.
Le fait d'utiliser quote-guillemet-plus-variable-plus-guillemet-quote ne doit-il pas être uniquement utilisé lorsqu'il s'agit d'une variable comme dans un HFiltre ???

Contribution le : 18/05/2004 17:01
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
le Sql est un standard et que ce soit en Windev, en Access En Sql Server , en Oracle les chaines de caractères doivent être mis entre quote.

Voir l'aide de Windev sur HExecuteRequete()
Citation :

, ... :

Valeurs des paramètres de la requête dans leur ordre d'initialisation (visible sous l'éditeur de requêtes). Chaque paramètre doit correspondre au type attendu. Les différents paramètres sont séparés par une virgule. Il est possible de spécifier ou non la valeur de chaque paramètre.


Contribution le : 18/05/2004 21:46
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Oui tout à fait lorsque l'on rentre une chaine de caractère en tant que paramètre dans une requête SQL, il faut l'entourer de quote.
Exemple:HExecuteRequete(,hRequeteDefaut,'Test')

Mais je ne rentre pas de chaines de caractères mais des variables variantes comme paramètres.
Exemple:Param1 est une variant="Test"
HExecuteRequete(,hRequeteDefaut,Param1)

Contribution le : 19/05/2004 09:03
Créer un fichier PDF de la contribution Imprimer


Re: Problème de requête pour Einstein en herbe
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Le pire de tout c'est qu'en mode "Debug" ça affiche toujours les bons enregistrements...
Je deviens dingue ça fait 2 jours que je cherche d'ou vient le problème...
Je vais refaire la fenêtre il me reste plus que ça

Contribution le : 19/05/2004 09:57
Créer un fichier PDF de la contribution Imprimer


Problème résolu
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Il suffisait simplement de modifier le nom de la rubrique "Date" en "DateSaisie" dans l'analyse.
Inexplicable y a pas d'autres mots... des journées de recherche pour en arriver à ça

Contribution le : 24/05/2004 11:15
Créer un fichier PDF de la contribution Imprimer


Re: Problème résolu
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Désolé.
A l'avenir, faire un tour des mots réservés de WinDev... les types de données en font partie.
Il ne faut donc pas les utilisée ni dans l'analyse, ni dans les variables (impossible).


Contribution le : 24/05/2004 11:30
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2