PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → wd26 erreur procédure stockée
wd26 erreur procédure stockée
Débuté par Laurent, 11 oct. 2021 18:08 - 12 réponses
Membre enregistré
227 messages
Posté le 11 octobre 2021 - 18:08
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
Membre enregistré
227 messages
Posté le 19 octobre 2021 - 14:01
bonjour

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

merci

--
LH
Posté le 19 octobre 2021 - 15:23
....le signe + est souligné en rouge avec le message type incompatible...

Lequel ? A vu de nez, j'en compte 11
Membre enregistré
227 messages
Posté le 20 octobre 2021 - 11:41
oui
mais ça correspond à quoi ??
ça n’empêche pas la proc de fctionner...
comment corriger ?

merci

--
LH
Posté le 20 octobre 2021 - 14:50
si tu ne nous dis pas QUEL signe + est en erreur, on n'a aucun moyen de te répondre
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 20 octobre 2021 - 15:40
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 -
Membre enregistré
227 messages
Posté le 20 octobre 2021 - 16:12
c'est justement tous les signes + qui sont soulignes rouges

--
LH
Membre enregistré
227 messages
Posté le 20 octobre 2021 - 16:14
en fait c'est le 1er + de chaque HExécuteRequêteSQL

--
LH
Membre enregistré
227 messages
Posté le 20 octobre 2021 - 16:20
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
Posté le 20 octobre 2021 - 16:21
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 ?
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 20 octobre 2021 - 16:49
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 -
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 20 octobre 2021 - 16:53
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 -
Membre enregistré
90 messages
Popularité : +7 (7 votes)
Posté le 20 octobre 2021 - 21:30
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