PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → wd26 erreur procédure stockée
wd26 erreur procédure stockée
Started by Laurent, Oct., 11 2021 6:08 PM - 12 replies
Registered member
231 messages
Posted on October, 11 2021 - 6:08 PM
bonjour

j'ai une erreur que je n'explique pas dans :

PROCÉDURE agregcommande()
sdcertificat est une Source de Données
sdcertificat="certificat_ent"
sddetail est une Source de Données
sddetail = "CERTIFICAT_DET"
sdcommande est une Source de Données
sdcommande = "commande_ent"
SI PAS HDéclareExterne("certificat_ent.FIC", "certificat_ent") ALORS
// Erreur de déclaration du fichier
//RENVOYER HErreurInfo()
FIN
SI PAS HDéclareExterne("certificat_det.FIC", "certificat_det") ALORS
// Erreur de déclaration du fichier
//RENVOYER HErreurInfo()
FIN
SI PAS HDéclareExterne("commande_ent.FIC", "commande_ent") ALORS
// Erreur de déclaration du fichier
//RENVOYER HErreurInfo()
FIN
req est une Source de Données
req2 est une Source de Données
sQl est une chaîne

//Sablier(Vrai)


POUR TOUT sdcertificat AVEC "etatcertif='E' OU etatcertif='F' OU etatcertif='J' ET datecre>='20190101'" // pour les certificat exportés...
// rechercher les details etalonnage effectué correct ou incorrect...
//si sdcertificat.NoCertificat="Z1912509" alors stop
HExécuteRequêteSQL(req,"SELECT COUNT("+sddetail+".NoCertificat) AS Comptage_1 FROM "+sddetail+" WHERE ("+sddetail+".EtatCertif = 'B' ) AND "+sddetail+".NoCertificat = '"+sdcertificat.NoCertificat+"' GROUP BY "+sddetail+".nocertificat ")
HLitPremier(req)
// compter les masses pour ce CE...
HExécuteRequêteSQL(req2,"SELECT COUNT("+sddetail+".RgMasse) AS Comptage_1,"+sddetail+".NoCertificat AS NoCertificat FROM "+sddetail+" WHERE "+sddetail+".NoCertificat ='"+ sdcertificat.NoCertificat+"' GROUP BY "+sddetail+".NoCertificat")
HLitPremier(req2)
SI req.comptage_1 = req2.comptage_1 ALORS //si toutes les masses sont terminées pour ce CE...
HLitRecherchePremier(sdcertificat,NoCertificat,sdcertificat.NoCertificat)
SI HTrouve(sdcertificat) ALORS
sdcertificat.EtatCertif="B" // marquer CE à étalonnage correct
HModifie(sdcertificat)
FIN
//sinon
//OU etatcertif='F'sdCertificat.etatcertif="F" // marquer CE à étalonnage incorrect
FIN

//tracer("agregecmde()","agrege "+sdcertificat.NoCertificat)
FIN


dans la ligne de la boucle POUR
HExécuteRequêteSQL(req,"SELECT COUNT("+sddetail+".NoCertificat) AS Comptage_1 FROM "+sddetail+" WHERE ("+sddetail+".EtatCertif = 'B' ) AND "+sddetail+".NoCertificat = '"+sdcertificat.NoCertificat+"' GROUP BY "+sddetail+".nocertificat ")

le signe + est souligné en rouge avec le message type incompatible
est ce un erreur ou un avertissement ?
car la procédure fonctionne il me semble

merci

--
LH
Registered member
231 messages
Posted on October, 19 2021 - 2:01 PM
bonjour

toujours pas d'idée sur ce phénomène...

merci

--
LH
Posted on October, 19 2021 - 3:23 PM
....le signe + est souligné en rouge avec le message type incompatible...

Lequel ? A vu de nez, j'en compte 11
Registered member
231 messages
Posted on October, 20 2021 - 11:41 AM
oui
mais ça correspond à quoi ??
ça n’empêche pas la proc de fctionner...
comment corriger ?

merci

--
LH
Posted on October, 20 2021 - 2:50 PM
si tu ne nous dis pas QUEL signe + est en erreur, on n'a aucun moyen de te répondre
Registered member
329 messages
Popularité : +28 (32 votes)
Posted on October, 20 2021 - 3:40 PM
Déjà, je pense que tu peux commencer par simplifier ta requête:
HExécuteRequêteSQL(req, "SELECT COUNT(NoCertificat) AS Comptage_1 FROM " + sddetail + " WHERE EtatCertif = 'B' AND NoCertificat = '" + sdcertificat.NoCertificat + "' GROUP BY NoCertificat"


--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Registered member
231 messages
Posted on October, 20 2021 - 4:12 PM
c'est justement tous les signes + qui sont soulignes rouges

--
LH
Registered member
231 messages
Posted on October, 20 2021 - 4:14 PM
en fait c'est le 1er + de chaque HExécuteRequêteSQL

--
LH
Registered member
231 messages
Posted on October, 20 2021 - 4:20 PM
si je supprime le sddetail +".NoCertificat comme le précise Dergen, ce qui est vrai, alors c'est le 2eme+ qui se souligne rouge

--
LH
Posted on October, 20 2021 - 4:21 PM
Bonjour,

sddetail c'est une source de données, dans la requête tu veux ajouter la chaine "sddetail". Est-ce qu'il faudrait pas mettre sddetail..Nom ou un truc dans le genre ?
Registered member
329 messages
Popularité : +28 (32 votes)
Posted on October, 20 2021 - 4:49 PM
A mon avis, comme cela, en étant loin de mon Windev, je dirait que ton PB est que tu définis la variable "sddetail" comme une source de données. et que tu mélanges les genres avec le besoin d'une variable de type chaine dans la construction de ta requête.

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se relit facilement...

- Pastiche d’une citation de Nicolas Boileau -
Registered member
329 messages
Popularité : +28 (32 votes)
Posted on October, 20 2021 - 4:53 PM
Plus d'infos, ici :
https://doc.pcsoft.fr/fr-FR/?1514053&name=Source_de_donnees

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se relit facilement...

- Pastiche d’une citation de Nicolas Boileau -
Registered member
90 messages
Popularité : +7 (7 votes)
Posted on October, 20 2021 - 9:30 PM
Il faudrait écrire la chaine de code SQL avec

sddetail..Nom, donc une chaine,
au lieu de
sdderail qui est une source de données