Erreur sur HExecuteRequeteSQL
DSI WDF
Inscrit:
13/02/2006 16:52
Post(s): 266
Bonjour,

je suis en train de mettre en place une fenêtre avec de multi petits graphiques concernant la répartition des prévisions de facturation par conducteur de travaux ....

Je sais que le code n'est pas optimisé, je le ferais par la suite !!!

Je lance la procédure présentée ci aprés pour tous les secteurs de l'entreprise
1/ Appel "BOIS"
2/ Appel "ALU"
3/ Appel "PVC"
4/ Appel "Fermetures"
5/ Appel "Divers"

Pour le bois tout se passe bien, et lorsque j'arrive au lancement de l'ALU,Windev plante sur le HLITPREMIER en me disant que la requête est inconnue de l'annalyse !!!

Si quelqu'un pouvait m'aider...

Voici le code de ma procédure :

PROCEDURE Calcul_Graph(NomSecteur)
//** Déclaration des Variables **
SD_MaReqSQL est une Source de Données
Ch_CodeSQL est une chaîne
sNomGraphe est une chaîne
sMaPolice1 est une Police
Ent_NumSerie est un entier
//** Initialisation des Variables **
sNomGraphe = "MonGraphe"
//** Mise en place du code SQL **
SELON NomSecteur
CAS "BOIS" :
SELON OptSelectTypesMontant
//** Montant des prévisions sur les 6 mois du carnet de commande **
CAS 1 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(PREVISIONS.MontantBois) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, PREVISIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = PREVISIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING PREVISIONS.DatePrevision >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "PREVISIONS.DatePrevision < " + SelectDatePredefini.TxtDateFin
//** Montant des facturations à la date de début des prévisions du carnet de commande **
CAS 2 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(SITUATIONS.MontantBois) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, SITUATIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = SITUATIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING SITUATIONS.DateSituation >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "SITUATIONS.DateSituation < " + SelectDatePredefini.TxtDateFin
FIN
CAS "ALU" :
//** Montant des prévisions sur les 6 mois du carnet de commande **
CAS 1 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(PREVISIONS.MontantALU) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, PREVISIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = PREVISIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING PREVISIONS.DatePrevision >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "PREVISIONS.DatePrevision < " + SelectDatePredefini.TxtDateFin
//** Montant des facturations à la date de début des prévisions du carnet de commande **
CAS 2 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(SITUATIONS.MontantALU) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, SITUATIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = SITUATIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING SITUATIONS.DateSituation >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "SITUATIONS.DateSituation < " + SelectDatePredefini.TxtDateFin
CAS "PVC" :
//** Montant des prévisions sur les 6 mois du carnet de commande **
CAS 1 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(PREVISIONS.MontantPVC) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, PREVISIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = PREVISIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING PREVISIONS.DatePrevision >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "PREVISIONS.DatePrevision < " + SelectDatePredefini.TxtDateFin
//** Montant des facturations à la date de début des prévisions du carnet de commande **
CAS 2 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(SITUATIONS.MontantPVC) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, SITUATIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = SITUATIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING SITUATIONS.DateSituation >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "SITUATIONS.DateSituation < " + SelectDatePredefini.TxtDateFin
CAS "FERMETURES" :
//** Montant des prévisions sur les 6 mois du carnet de commande **
CAS 1 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(PREVISIONS.MontantFermetures) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, PREVISIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = PREVISIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING PREVISIONS.DatePrevision >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "PREVISIONS.DatePrevision < " + SelectDatePredefini.TxtDateFin
//** Montant des facturations à la date de début des prévisions du carnet de commande **
CAS 2 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(SITUATIONS.MontantFermetures) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, SITUATIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = SITUATIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING SITUATIONS.DateSituation >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "SITUATIONS.DateSituation < " + SelectDatePredefini.TxtDateFin
CAS "DIVERS" :
//** Montant des prévisions sur les 6 mois du carnet de commande **
CAS 1 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(PREVISIONS.MontantDivers) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, PREVISIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = PREVISIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING PREVISIONS.DatePrevision >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "PREVISIONS.DatePrevision < " + SelectDatePredefini.TxtDateFin
//** Montant des facturations à la date de début des prévisions du carnet de commande **
CAS 2 :
Ch_CodeSQL = "SELECT CTX.NomPrenomCtx AS NomPrenomCtx, SUM(SITUATIONS.MontantDivers) AS MontantTotal" + " "
Ch_CodeSQL += "FROM CHANTIER, SITUATIONS, CTX" + " "
Ch_CodeSQL += "WHERE CHANTIER.CodeChantier = SITUATIONS.CodeChantier AND CTX.CodeCtx = CHANTIER.CodeCtx" + " "
Ch_CodeSQL += "GROUP BY CTX.NomPrenomCtx" + " "
Ch_CodeSQL += "HAVING SITUATIONS.DateSituation >= " + SelectDatePredefini.TxtDateDebut + " AND "
Ch_CodeSQL += "SITUATIONS.DateSituation < " + SelectDatePredefini.TxtDateFin
FIN
//** Exécution de la requête SQL **
HExécuteRequêteSQL(SD_MaReqSQL,Ch_CodeSQL)
//** Création du graphique **
//** Défininition du type de graphe **
grCrée(sNomGraphe, grSecteur)
//** Destination du graphe **
SELON NomSecteur
CAS "BOIS" :
grDestinationChamp(sNomGraphe, ImgGraphBois)
CAS "ALU" :
grDestinationChamp(sNomGraphe, ImgGraphALU)
CAS "PVC" :
grDestinationChamp(sNomGraphe, ImgGraphPVC)
CAS "FERMETURES" :
grDestinationChamp(sNomGraphe, ImgGraphFermetures)
CAS "DIVERS" :
grDestinationChamp(sNomGraphe, ImgGraphDivers)
FIN
//** Police du titre du graphe **
sMaPolice1 = PoliceCrée("Arial", 12, iGras + iSouligné)
grPoliceTitre(sNomGraphe, sMaPolice1)
//** Autres textes **
sMaPolice2 est une Police
sMaPolice2 = PoliceCrée("Arial", 8, iNormal)
grPoliceTitreAxe(sNomGraphe, sMaPolice2)
grPoliceEtiquette(sNomGraphe, sMaPolice2)
grPoliceLégende(sNomGraphe, sMaPolice2)
//** Position de la légende **
grLégende(sNomGraphe,grADroite)
//** Affichage des pourcentages **
grLibellé(sNomGraphe, grAffichePourcentage, Vrai)
//** Affichage des bulles d'aide **
grBulle(sNomGraphe, grFormatBulleSecteur, "[%SERIE%]" + RC + "[%CATEGORIE%]" + RC + "[%VALEUR%]" + RC + "[%%%]")
//** Angle de départ de la première part
grSecteurAngleDépart(sNomGraphe, 0)
//** Indice de la part à excentrer **
grSecteurPartExcentrée(sNomGraphe, 3, 30)
//** Récupération des Données **
HLitPremier(SD_MaReqSQL,"NomPrenomCtx",hSansRafraîchir)
//** Initialisation du numéro de série **
Ent_NumSerie = 1
TANTQUE PAS HEnDehors(SD_MaReqSQL)
Trace(SD_MaReqSQL.NomPrenomCtx + TAB + SD_MaReqSQL.MontantTotal)
grAjouteDonnée(sNomGraphe,Ent_NumSerie,SD_MaReqSQL.MontantTotal)
//** Ctx Suivant **
HLitSuivant(SD_MaReqSQL,"NomPrenomCtx")
//** Incrémentation du Numéro de Série **
Ent_NumSerie++
FIN
// Dessin du graphe
grDessine(sNomGraphe)

Contribution le : 04/09/2006 09:03
Créer un fichier PDF de la contribution Imprimer


Re: Erreur sur HExecuteRequeteSQL
Utilisateur WDF
Inscrit:
06/02/2003 08:38
De Bourgogne
Post(s): 88
Bonjour,

Il faudrait tracer l'appel de nomSecteur,
si hlitpremier génere une erreur , c'est que la requête
n'existe pas , donc ici, ne passe pas dans dans les cas définis, qui executent la requête.

Cordialement,
JYM

Contribution le : 04/09/2006 09:37
Créer un fichier PDF de la contribution Imprimer


Re: Erreur sur HExecuteRequeteSQL
DSI WDF
Inscrit:
13/02/2006 16:52
Post(s): 266
J'ai trouvé l'erreur, à partir de l'ALU, j'ai oublié dans mon copier coller le Selon OptSel...


Maintenant, j'ai un autre souci :

Tous mes graphes se créent bien, mais lorsque je mets comme destination un champ image ( 5 Champs Image Différent ici), il n'ya que le dernier qui s'affiche correctement.

Auriez vous une solution car même en faisant un MultitacheRepeint(MaFenetre), je n'ai qu'un graphe affiché !!!


J'ai essayé de détourner le problème en créant mes graphes dans des fichiers BMP puis de les importer dans mes champs images mais la qualité est vraiment trés mauvaise, c'est pour cela que je voudrais passer directement dans le champ image...

Merci pour toute aide apportée !!!

Contribution le : 04/09/2006 09:52
Créer un fichier PDF de la contribution Imprimer


Re: Erreur sur HExecuteRequeteSQL
DSI WDF
Inscrit:
13/02/2006 16:52
Post(s): 266
Voici le résultat aprés l'exécution de mes requêtes !!!

Je devrais normalement avoir un graphique dans chaque partie !!

Attacher un fichier:



jpg  Imp Ecran.jpg (70.78 KB)
1670_44fbef84cac82.jpg 1027X765 px

Contribution le : 04/09/2006 11:19
Créer un fichier PDF de la contribution Imprimer


Re: Erreur sur HExecuteRequeteSQL
Developpeur WDF
Inscrit:
18/06/2006 13:54
Post(s): 106
sNomGraphe n'a qu'un seul nom de graphique "MonGraphe"

dans ton code :

sNomGraphe = "MonGraphe"


Dans tout les cas il va dessiner dans le champ "MonGraphe"

Comment se nomme les autres champs graphiques ?

Je pense qu'il ya un probleme dans ton code, pas dans le comportement d'affichage des graphs par windev.

Contribution le : 04/09/2006 13:50
Créer un fichier PDF de la contribution Imprimer


Re: Erreur sur HExecuteRequeteSQL
DSI WDF
Inscrit:
13/02/2006 16:52
Post(s): 266
D'accord, mais la procédure est exécutée autant de fois qu'il y a de graphiques, donc par la suite cela devient indépendant.

En plus selon le secteur traité le champ de destination n'est pas le même et je le gère par la fonction

GrDestinationChamp(Champ1)
GrDestinationChamp(Champ2)
GrDestinationChamp(Champ3)
GrDestinationChamp(Champ4)
GrDestinationChamp(Champ5)

En plus pendant l'exécution, on voit les graphiques se faire mais deviennent invisibles aprés....Peut être que tes dires sont vrais mais je ne comprendrais pas pourquoi, dans le sens ou j'ai plusieurs exécutions de la procédure qui permet de bien déterminer chaque création !!

Merci de ton aide !!!

Contribution le : 04/09/2006 14:27
Créer un fichier PDF de la contribution Imprimer


Re: Erreur sur HExecuteRequeteSQL
Developpeur WDF
Inscrit:
18/06/2006 13:54
Post(s): 106
Essaye de rendre les champs images invisible et tout de suite après, reaffiche les (apres toutes tes procedures de dessins de graph).


Champ1..visible = faux
Champ1..visible = vrai

FenRepeint() 


.. peut etre que ca changera quelquechose... ou pas :p

- Vérifie aussi que tes champs graphiques ne se trouvent pas dans des plans.
- Regarde aussi si ils ne se superposent pas (meme d'1 pixel) avec un autre champ, c'est débile mais jai eu ce probleme une fois...)
- Controle que les champs images ne sont pas initialisé à invisible ou que par megarde tu les rend invisible dans le code.
- Essaye avec une solution alternative de clonage de champs (ChampClone())
- Met le dessin des champs en memoire et "recolle" les dans un autre champ (dSauveImagePNG(ImageDessin,EnMémoire))

Contribution le : 04/09/2006 15:39
Créer un fichier PDF de la contribution Imprimer


Re: Erreur sur HExecuteRequeteSQL
DSI WDF
Inscrit:
13/02/2006 16:52
Post(s): 266
J'ai trouvé la solution :

En effet, même si j'exécute ma fenêtre plusieurs fois, le graphique reste en mémoire le temps de vie de la fenêtre.

C'est pourquoi dans mon cas, il faut que je gère un nom de graphique différent pour tous mes secteurs, tout comme je gère le champ de destination...

Tout marche trés bien maintenant, merci beaucoup

Contribution le : 05/09/2006 17:38
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