| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 11:09 |
Bonjour à tous,
J'ai créé une requête sur une base Access importé en OLE DB. Le requête fonctionne et donne le bon résultat dans l'éditeur de requêtes. Par contre, dans mon code ci-dessous j'arrive pas à faire remonter le bon résultat. J'obtiens systématiquement 0.
HExécuteRequête(REQ_Demandes_en_estimation) LIB_135 = REQ_Demandes_en_estimation.Comptage_1
Auriez-vous une idée ?
Merci à vous. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 314 messages Popularité : +8 (10 votes) |
|
Posté le 22 novembre 2020 - 14:06 |
Bonjour
Il faut lire le premier enregistrement ? Ou voir le format de tin champ libellé... ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 90 messages Popularité : +7 (7 votes) |
|
Posté le 22 novembre 2020 - 16:52 |
Bonjour,
Il serait bon de vérifier déjà que la requête a été exécutée sans erreur :
SI HExécuteRequête(REQ_Demandes_en_estimation) ALORS Info("Comptage : " + REQ_Demandes_en_estimation.Comptage_1) SINON Erreur(HErreurInfo()) FIN
Bon dév. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 18:38 |
GB a écrit :
Bonjour
Il faut lire le premier enregistrement ? Ou voir le format de tin champ libellé... ?
C'est une requête de comptage, il n'y a donc pas de première enregistrement. le format du libellé est en numérique.
Thierry M a écrit :
Bonjour,
Il serait bon de vérifier déjà que la requête a été exécutée sans erreur :
SI HExécuteRequête(REQ_Demandes_en_estimation) ALORS Info("Comptage : " + REQ_Demandes_en_estimation.Comptage_1) SINON Erreur(HErreurInfo()) FIN
Bon dév.
La requête fonctionne et s'exécute mais le résultat est 0 alors que que je dois avoir 55 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 90 messages Popularité : +7 (7 votes) |
|
Posté le 22 novembre 2020 - 18:44 |
Ce que j'ai compris du premier message c'est que la "requête fonctionne et donne le bon résultat dans l'éditeur de requêtes" Est-ce également vérifié aussi en exécution et en mode GO ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 90 messages Popularité : +7 (7 votes) |
|
Posté le 22 novembre 2020 - 18:55 |
Autres choses à tester serait de vérifier le nombre d'enregistrements :
- en remplaçant le SUM(Rub) par COUNT(*) dans la requête
SI HExécuteRequête(REQ_Demandes_en_estimation) ALORS Info(REQ_A1_Declarations.Nb) SINON Erreur(HErreurInfo()) FIN
- en faisant un simple SELECT sans SUM ni COUNT dans la requête et en vérifiant le nombre d'enregistrements :
SI HExécuteRequête(REQ_Demandes_en_estimation) ALORS Info(REQ_A1_Declarations.NbEnr()) SINON Erreur(HErreurInfo()) FIN |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 19:17 |
Thierry M a écrit :
Ce que j'ai compris du premier message c'est que la "requête fonctionne et donne le bon résultat dans l'éditeur de requêtes" Est-ce également vérifié aussi en exécution et en mode GO ?
Oui la requête fonctionne et donne le bon résultat dans l'éditeur. Alors là je suis pas sur de te suivre, je teste la requête en cliquant sur Go et ça marche. C'est lorsque je teste l'application complète avec le grand GO que le résultat de la requête n'est plus bon. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 19:21 |
Thierry M a écrit :
Autres choses à tester serait de vérifier le nombre d'enregistrements :
- en remplaçant le SUM(Rub) par COUNT(*) dans la requête SI HExécuteRequête(REQ_Demandes_en_estimation) ALORS Info(REQ_A1_Declarations.Nb) SINON Erreur(HErreurInfo()) FIN
- en faisant un simple SELECT sans SUM ni COUNT dans la requête et en vérifiant le nombre d'enregistrements : SI HExécuteRequête(REQ_Demandes_en_estimation) ALORS Info(REQ_A1_Declarations.NbEnr()) SINON Erreur(HErreurInfo()) FIN
Ma requête est la suivante :
SELECT COUNT(Tab_Demande.Num_Etape) AS Comptage_1 FROM Tab_Demande WHERE Tab_Demande.Num_Etape = 40
Windev reconnait pas "REQ_A1_Declarations" c'est le nom de ma requête ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 19:27 |
J'ai supprimé le COUNT et fais un SELECT simple, du coup j'ai bien 55 enregistrements qui s'affiche avec le code :
SI HExécuteRequête(REQ_Demandes_en_estimation) ALORS Info(REQ_Demandes_en_estimation.NbEnr(hEtatActif)) SINON Erreur(HErreurInfo()) FIN
ça contourne mon problème, mais ça reste une énigme |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 19:33 |
J'ai une autre requête qui me pose également problème et pour laquelle ça va être compliqué de contourner
SELECT Tab_Suivi.Num_Dem AS Num_Dem, Tab_Suivi.Etat AS Etat, Tab_Suivi.Num_Etape AS Num_Etape FROM Tab_Suivi WHERE Tab_Suivi.Etat = 'Traitement en cours' AND Tab_Suivi.Num_Dem = {ParamNum_Dem}
Pour résumer, je souhaite connaitre le Numéro d'étape qui est en "Traitement en cours" d'une Demande par son numéro. Je sais pas si c'est très clair |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 19:38 |
Le résultat de ma requête REQ_Recherche_EtapeEnCours.Num_Etape me donne bien entendu 0 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 314 messages Popularité : +8 (10 votes) |
|
Posté le 22 novembre 2020 - 20:41 |
Curieux...
Essaie de refaire ta requete pas a pas en faisant les tests a chaque etape. Ca doit se jouer a rien |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 22 novembre 2020 - 22:36 |
GB a écrit :
Curieux...
Essaie de refaire ta requete pas a pas en faisant les tests a chaque etape. Ca doit se jouer a rien
J'en ai refais une autre mais c pareil... Pourtant la requête fonctionne bien, c'est la lecture du résultat qui ne fonctionne pas. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 314 messages Popularité : +8 (10 votes) |
|
Posté le 23 novembre 2020 - 06:31 |
Alors il y a quelque chose là ou tu essaie de la lire dans ton appli. Un hfiltre ou autre ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 304 messages Popularité : +47 (51 votes) |
|
Posté le 23 novembre 2020 - 09:16 |
Salut Laurent
c'est normal que cela ne fonctionne pas correctement, tu exécutes la requête mais tu ne la lit pas. C'est bien repris dans l'aide https://doc.pcsoft.fr/fr-FR/?3044080
Attention : Pour se positionner sur le premier Enregistrement du résultat de la requête, utilisez par exemple la FONCTION HLitPremier.
SQL 1 Remplacer ===========
HExécuteRequête(REQ_Demandes_en_estimation) LIB_135 = REQ_Demandes_en_estimation.Comptage_1
Par ===
SI PAS HExécuteRequête(REQ_Demandes_en_estimation, hRequêteDéfaut) ALORS Erreur(HErreur(hErrEnCours)) SINON HLitPremier(REQ_Demandes_en_estimation) LIB_135 = REQ_Demandes_en_estimation.Comptage_1 FIN
SQL 2 =====
SI PAS HExécuteRequête(REQ_Recherche_EtapeEnCours, hRequêteDéfaut, nNumDemande) ALORS Erreur(HErreur(hErrEnCours)) SINON HLitPremier(REQ_Recherche_EtapeEnCours) TANTQUE PAS HEnDehors(REQ_Recherche_EtapeEnCours) Info(REQ_Recherche_EtapeEnCours.Num_Etape) FIN FIN
Bon Dev Daryl
-- http://www.concept4u2.com |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 846 messages Popularité : +227 (347 votes) |
|
Posté le 23 novembre 2020 - 09:32 |
Bonjour, Dans ta deuxième requête je mettrais :
WHERE UPPER(TRIM(Tab_Suivi.Etat)) = 'TRAITEMENT EN COURS''
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 846 messages Popularité : +227 (347 votes) |
|
Posté le 23 novembre 2020 - 09:34 |
Avec une seule simple quote fermante
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 90 messages Popularité : +7 (7 votes) |
|
Posté le 23 novembre 2020 - 09:58 |
Effectivement , Daryl a raison il manque un HLitPremier(REQ_Demandes_en_estimation) dans la première requête
Concernant la seconde requête, si la suggestion judicieuse de Voroltinquo ne fait pas le job, je suggère de vérifier que le type de la rubrique "Tab_Suivi.Etat" est bien une chaîne (et non - peut-être - une rubrique de type entier )
Bon Dév. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +1 (1 vote) |
|
Posté le 23 novembre 2020 - 10:51 |
Daryl a écrit :
Salut Laurent c'est normal que cela ne fonctionne pas correctement, tu exécutes la requête mais tu ne la lit pas. C'est bien repris dans l'aide https://doc.pcsoft.fr/fr-FR/?3044080Attention : Pour se positionner sur le premier enregistrement du résultat de la requête, utilisez par exemple la fonction HLitPremier. SQL 1 Remplacer =========== HExécuteRequête(REQ_Demandes_en_estimation) LIB_135 = REQ_Demandes_en_estimation.Comptage_1 Par === SI PAS HExécuteRequête(REQ_Demandes_en_estimation, hRequêteDéfaut) ALORS Erreur(HErreur(hErrEnCours)) SINON HLitPremier(REQ_Demandes_en_estimation) LIB_135 = REQ_Demandes_en_estimation.Comptage_1 FIN SQL 2 ===== SI PAS HExécuteRequête(REQ_Recherche_EtapeEnCours, hRequêteDéfaut, nNumDemande) ALORS Erreur(HErreur(hErrEnCours)) SINON HLitPremier(REQ_Recherche_EtapeEnCours) TANTQUE PAS HEnDehors(REQ_Recherche_EtapeEnCours) // Je suppose que tu peux avoir plusieurs étape en cours Info(REQ_Recherche_EtapeEnCours.Num_Etape) FIN FIN Bon Dev Daryl -- http://www.concept4u2.com
Bonjour Daryl,
Tu as raison, avec le HLitPremier tout fonctionne ... par contre sur une base HFSQL, sans HLitPremier ça fonction du coup pour moi tout était bon.
Merci à toi, ça me débloque bien |
| |
| |
| | | |
|
| | |