PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Problème execussion d'une requête SQL
Problème execussion d'une requête SQL
Débuté par David Picard, 14 jan. 2020 09:21 - 1 réponse
Membre enregistré
1 message
Posté le 14 janvier 2020 - 09:21
Bonjour,

Je débute en Windev et bien qu'une migration vers la WD 25 est prévue dans quelques semaines, mon entreprise utilise toujours la version 23 qui répond aux besoins. La base de données est MS SQL server.

J'ai écrit une petite application, simple qui demande à un utilisateur juste une date de début de période. L'application boucle ensuite depuis cette date jusqu'à la date du jour et construit un fichiers CSV par jour. Ces fichiers contiennent les données des transaction du jour issues de 2 tables de la DB.

La requête que j'utilise fonctionne parfaitement dans le SQL Server Management Studio. Par contre lorsque j’exécute l'application WD, la requête retourne les données nécessaires pour toutes les journées avant une certaine date (le 10/01/2020),
seulement une partie des données pour le 10 et ensuite plus rien pour les autres journées.

J'ai pensé à un problème dans l'une des 2 tables, mais je ne trouve rien (requête retournes les valeurs pour tous les jours) et une autre application qui travaille sur les même tables n'a pas de soucis.

Auriez-vous une idée de ce qui peut causer ce problème?

Voici le code qui est exécuté:

CAMPAGNE_USE est un entier = 2019

//************************************************************************************************************************

G_REQUEST_PROTOTYPE est une chaîne = "Select date_comptable_liv," +...
" USINE," +...
" numero," +...
" L.planteur," +...
" Right (' '+NOM_PLANTEUR,30) NOM_PLANTEUR," +...
" ZONE_GEOGRAPHIQUE région," +...
" Right (' '+E.DESC_EMBLAVEMENT, 30) EMBLAVEMENT," +...
" poids_entree," +...
" poids_sortie," +...
" POIDS_A_TARER POIDS_BRUT," +...
" left(HEURE_ENTREE_BASCULE,2)+':'+Right(HEURE_ENTREE_BASCULE,2) heure_échantillonnage," +...
" Right('00000'+CONVERT(varchar(10), S_poids_brut_1),6) S_poids_brut_1," +...
" Right('00000'+CONVERT(varchar(10), S_poids_net_1),6) S_poids_net_1 ," +...
" Right('00000'+CONVERT(varchar(10), S_poids_brut_2),6) S_poids_brut_2," +...
" Right('00000'+CONVERT(varchar(10), S_poids_net_2),6) S_poids_net_2," +...
" Right('00000'+CONVERT(varchar(10), CALCUL_TARE_COLLET),6) CALCUL_TARE_COLLET," +...
" Right('00000'+CONVERT(varchar(10), CALCUL_TARE_TOTALE),6) CALCUL_TARE_TOTALE," +...
" Right('00000'+CONVERT(varchar(10), CALCUL_TARE_TERRE),6) CALCUL_TARE_TERRE," +...
" Right('00000'+CONVERT(varchar(10), S_POIDS_ADD1),6) terre," +...
" Right('00000'+CONVERT(varchar(10), S_POIDS_ADD2),6) pierre," +...
" Right('00000'+CONVERT(varchar(10), S_POIDS_ADD3),6) pourries," +...
" Right('00000'+CONVERT(varchar(10), S_POIDS_ADD4),6) gelées," +...
" Right('00000'+CONVERT(varchar(10), S_POIDS_ADD5),6) corps_etrangers," +...
" Right('00000'+CONVERT(varchar(10), CALCUL_POIDS_NET),5) CALCUL_POIDS_NET," +...
" Right('00000'+CONVERT(varchar(10), ANALYSIS_RICHESSE),5) ANALYSIS_RICHESSE," +...
" Right('00000'+CONVERT(varchar(10), CALCUL_POIDS_SUCRE),4) CALCUL_POIDS_SUCRE," +...
" (case cast(TRANSPORTEUR as int)-cast(L.PLANTEUR as int)" +...
" when 0 then 'AXE'" +...
" else 'CUS'" +...
" end) as TypeTransport," +...
" Right('--'+CONVERT(varchar(10), PARMENTIERE),1) PARMENTIERE," +...
" L.GRUE," +...
" (case L.BET_DECROTTEE_YN" +...
" when 0 then 'NON'" +...
" else 'OUI'" +...
" end) as BET_DECROTTEE_YN" +...
" from LIV_BETTERAVES L, EMBLAVEMENT E" +...
" where L.CAMPAGNE = "+ CAMPAGNE_USE + " " +...
" and date_comptable_liv = {date}" +...
" and L.EMBLAVEMENT = E.NUM_EMBLAVEMENT and E.PLANTEUR = L.PLANTEUR"
//************************************************************************************************************************

maRequete est une Source de Données
FILE_ID est un entier
STR est une chaîne
JourTraité est une Date = JOURNEE


BOUCLE
G_REQUEST = Remplace(G_REQUEST_PROTOTYPE,"{date}",JourTraité)
//Trace(G_REQUEST)
G_RESULTAT = HExécuteRequêteSQL(maRequete,ISCAL_SQL,hRequêteSansCorrection,G_REQUEST)
//G_RESULTAT = HExécuteRequêteSQL(maRequete,ISCAL_SQL,hRequêteSansCorrection,"Select * from LIV_BETTERAVES where date_comptable_liv = 20200110")

SI G_RESULTAT = Vrai ALORS

FILE_ID= fCrée(DEVICE+"\BIETDAG"+ JourTraité +".CSV")
SI FILE_ID <> -1 ALORS
fEcritLigne(FILE_ID,"date_comptable_liv;USINE;numero;planteur;NOM_PLANTEUR;région;EMBLAVEMENT;poids_entree;poids_sortie;POIDS_BRUT;heure_échantillonnage;S_poids_brut_1;S_poids_net_1;S_poids_brut_2;S_poids_net_2;CALCUL_TARE_COLLET;CALCUL_TARE_TOTALE;CALCUL_TARE_TERRE;terre;pierre;pourries;gelées;corps_etrangers;CALCUL_POIDS_NET;ANALYSIS_RICHESSE;CALCUL_POIDS_SUCRE;TypeTransport;PARMENTIERE;GRUE;BET_DECROTTEE_YN")

HLitPremier(maRequete)

//Info(maRequete.S_poids_brut_1)
TANTQUE PAS HEnDehors(maRequete)

STR = maRequete.date_comptable_liv + ";" + ...
maRequete.Usine + ";" + ...
maRequete.numero + ";" + ...
maRequete.planteur + ";" + ...
maRequete.NOM_PLANTEUR + ";" + ...
maRequete.région + ";" + ...
maRequete.EMBLAVEMENT + ";" + ...
maRequete.poids_entree + ";" + ...
maRequete.poids_sortie + ";" + ...
maRequete.POIDS_BRUT + ";" + ...
maRequete.heure_échantillonnage + ";" + ...
maRequete.S_poids_brut_1 + ";" + ...
maRequete.S_poids_net_1 + ";" +...
maRequete.S_poids_brut_2 + ";" +...
maRequete.S_poids_net_2 + ";" +...
maRequete.CALCUL_TARE_COLLET + ";" +...
maRequete.CALCUL_TARE_TOTALE + ";" +...
maRequete.CALCUL_TARE_TERRE + ";" +...
maRequete.terre+ ";" +...
maRequete.pierre+ ";" +...
maRequete.pourries+ ";" +...
maRequete.gelées+ ";" +...
maRequete.corps_etrangers+ ";" +...
maRequete.CALCUL_POIDS_NET+ ";" +...
maRequete.ANALYSIS_RICHESSE+ ";" +...
maRequete.CALCUL_POIDS_SUCRE+ ";" +...
maRequete.TypeTransport+ ";" +...
maRequete.PARMENTIERE+ ";" +...
maRequete.GRUE+ ";" +...
maRequete.BET_DECROTTEE_YN

fEcritLigne(FILE_ID,STR)

HLitSuivant(maRequete)

FIN
fFerme(FILE_ID)
JourTraité ++

SINON
Erreur("Impossible de créer le fichier à la date du " + JourTraité)
SORTIR
FIN

SINON
Erreur("Impossible d'obtenir les données à la date du " + JourTraité)
FIN
SI JourTraité > DateSys() ALORS SORTIR
FIN
Info("Les fichiers ont été créés")
Ferme()

Meric d'avance pour votre aide,
David
Membre enregistré
940 messages
Popularité : +66 (68 votes)
Posté le 15 janvier 2020 - 12:30
bonjour David,

vous indiquez que votre requête fonctionne sous SQL Management Studio, mais avec exactement les mêmes paramètres que votre code ?

car je vois que vous utilisez une année de campagne dans votre code en dur à 2019, avec des dates de livraison en 2020 , est-ce que ce n'est pas çà le soucis ?

votre campagne de betterave se termine quand ?

ce qui me semble bizarre également, c'est votre paramètre {date} , votre rubrique 'date_comptable_liv' est stockée sous forme de quoi sur SQL ?
un entier ?

si ce n'est pas un entier, il manque des ' ' sur votre condition...