IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Requete sql en windev


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut Requete sql en windev
    Bonjour a tous

    Voila mon probleme je souhaiterais connaitre le nombre d'enregistrement dans un de mes fichier hyper file via une requete sql sans connexion je précise

    ma requete est la suivante

    test=hexecuterequetesql("select count(*) from intia where intia.date between param1 and param2")

    je recupere le resultat de ma requete dans test qui est declare avant ma requete comme un entier

    param 1 et 2 sont des dates saisie par l'utilisateur dans un champs de saisi

    Si je veux connaitre cela c pour optimiser les borne de ma jauge de progression car pour le moment le parametre est en dur mais il peut changer a tout moment jusqu'au jour ou il sera depasse et ma jauge marchera plus


    Merci pour vos éventuelles reponse

    Tommy432

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Je te propose de bien lire l'aide en ligne de hExecuteRequeteSQL...

    Tatayo.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    Bonjour tatayo

    Si je viens demander de l'aide ici c'est que j'ai déjà lu l'aide de pc soft... :'(
    Et cherche une solution car le code marche mais ma requete me retourne 0 au lieu du bon chiffre

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    là tu récupères dans test le fait que oui ou non la requête a pu se lancer ...
    Cette requête est vide et le contenu de cette requête vide est stockée dans "select count(*) from intia where intia.date between param1 and param2" ...



    Voir la doc sur http://doc.pcsoft.fr/fr-FR/?3044084&...cuteRequeteSQL
    et surtout lire ce passage :
    Attention : Pour se positionner sur le premier enregistrement du résultat de la requête, utilisez par exemple la fonction HLitPremier.
    Si tu veux utiliser cette fonction, il faut que tu la comprennes :
    on a donc une source de données et une requête. Cette source de données sera le résultat de la requête et tu pourras y lire ce que tu veux.

    Par ailleurs, dans ta requête n'hésites pas à nommer le résultat du count pour mieux l'utiliser : select count(*) as NbEnreg from intia where intia.date between param1 and param2

    Bon courage,

    Nicoals

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    Merci NIcolas pouriez vous m'en dire d'avantage svp merci

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Visiblement tu as mal lu l'aide en ligne...
    Sinon tu aurais non seulement vu qu'elle renvoie un booléen (c'est clairement indiqué, mais c'est aussi très clair dans les exemples), mais en plus une indication sur la façon de récupérer le résultat de la requête (c'est vers la fin).

    Tatayo.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    Désolé j'ai mal lu l'aide en ligne...

    J'ai compris que pour recupere le resultat de la requete j'avais besoin d'une source de donnée j'ai rajouté cela mais comment recuperer le resultat du count ?

    merci

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Un indice: il faut parcourir le résultat de la requête, comme indiqué à la fin de l'aide en ligne de hExecuteRequeteSql()...
    Tu as aussi un exemple dans l'aide en ligne de hExecuteRequete(), le fonctionnement est le même.

    Tatayo.

  9. #9
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    En mail privé :
    Bonjour

    J'ai lu ce que vous m'aviez donné toutefois j'ai du mal a comprendre comment recuperer le resultat
    POurriez m'expliquez cela

    Merci
    Je ne répond pas en mail privé sinon le forum perd tout son intérêt ...

    Il faut parcourir le résultat de la requête avec la fonction HLit ou HLitPremier comme expliqué dans l'aide et comme l'a déjà rappeler Tatayo.

    Pour la suite, postes ici le code que tu as produit et on verra où il peut y avoir un problème ...

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    voila mon code j'arrive toujours pas a visualiser le resultat du count

    Pourriez vous m'aider svp merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    test est un booléen
    // nbre ligne
    dParam1 est une Date = datedebut
    dParam2 est une Date = datefin
    Nbenregistrement est une Source de Données
     
    test=HExécuteRequêteSQL(Nbenregistrement,"SELECT COUNT(*) as nbenreg FROM INTIA WHERE INTIA.DATE BETWEEN Param1 AND Param2 ")
    SI test=Vrai ALORS
    	HLitPremier(Nbenregistrement)
    	Info(Nbenregistrement.nbenreg)
    FIN

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Le mieux, quand on exécute une requête, est de tester sa position dans le curseur via hEndehors...

    Ensuite est-ce que l'IDE doit déterminer seul que Param1 et Param2 de la requête doivent prendre les valeurs de vos variables dParam1 et dParam2 ? pour rappel une requête est une chaîne dont l'interprétation est gérée par le SGBD....
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    J'ajouterai que si le code gérait aussi le cas "test = faux" et affichait le message d'erreur correspondant, tu pourrais rapidement identifier le problème.

    Tatayo.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    est est un booléen
    // nbre ligne
    dParam1 est une Date = datedebut
    dParam2 est une Date = datefin
    Nbenregistrement est une Source de Données
     
    test=HExécuteRequêteSQL(Nbenregistrement,"SELECT COUNT(*) as nbenreg FROM INTIA WHERE INTIA.DATE BETWEEN Param1 AND Param2 ")
    SI test=Vrai ALORS
    	TANTQUE PAS HEnDehors(INTIA) ET INTIA.DATE>=datedebut ET INTIA.DATE<=datefin ET INTIA.TAG <> "A"  ET INTIA.TAG <>"Z" ET INTIA.TAG <>"F" ET INTIA.TAG <>"S"
    	HLitPremier(Nbenregistrement)
    	Info(Nbenregistrement.nbenreg)
    	FIN
    FIN
    voici le code avec le test si la requete est en dehors ou pas

    pour vour repondre mes param 1 et 2 sont des champs de saisi rentre par l'utilisateur

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    Merci tatayo pour la gestion d'erreur car ma requete ne s'execute pas elle est en erreur je viens de faire le test et celui ci m'a renvoye le msg d'erreur que je lui avait indiqué

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Je pensais que vous trouveriez tout seul... mais quoiqu'il en soit vous n'avez pas compris ce que je vous disais au sujet des paramètres...

    Param1 et Param2 dans l'instruction HExécuteRequêteSQL(Nbenregistrement,"SELECT COUNT(*) as nbenreg FROM INTIA WHERE INTIA.DATE BETWEEN Param1 AND Param2 ") sont considérés comme des chaines et non comme vos champs de saisie ou vos variables (la coloration syntaxique devrait vous le faire comprendre)...

    Il faudrait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HExécuteRequêteSQL(Nbenregistrement,"SELECT COUNT(*) as nbenreg FROM INTIA WHERE INTIA.DATE BETWEEN "+datedebut+" AND "+datefin)
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    Merci la requete comprend mes parametre par contre le message m'affichant le nombre d'enregistrement me renvoie 0 ?

  17. #17
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Voici comment je procède quand le résultat d'une requête me parait étrange :

    -> j'affecte la chaîne de la requête SQL à une variable
    -> je récupère la valeur de la variable
    -> je teste l’exécution de la requête indépendamment de l'IDE (via une outils de requêtage ou le centre de contrôle si base HF)

    Normalement à ce stade j'ai trouvé les causes du problème.
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette solution
    J'ai deux hypothese de probleme :

    --> l'erreur vient de ma requete
    -->l'erreur vient de mon si et de mon tant que


    Apres test de la requete sur le fichier en question en mettant des dates choisies il me retourne bien le nbre d'enregistrement entre mes 2 dates


    Donc le probleme vient pas de ma requete mais de mon si ou tant que...

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Points : 5
    Points
    5
    Par défaut
    mon fichier intia est un fichier hyper file donc j'ai fais une selection d'enregistrement en requete sql et il m'a sortie le nbre d'enregistrment sur ma periode

  20. #20
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Allez je vous le dis... on fait d'abord un hLitPremier, on boucle, et dans la boucle on fait des hLitSuivant.

    Juste pour vous aider à être autonome et donc plus efficace : TOUS ces problèmes auraient été très très facilement identifiés au débugueur.
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [WD18] le symbole * dans une requete sql sous Windev 18
    Par legero dans le forum WinDev
    Réponses: 2
    Dernier message: 05/12/2013, 16h30
  2. Windev Modifier une requete SQL ..ODBCCodeSQL
    Par MACNABE dans le forum WinDev
    Réponses: 5
    Dernier message: 27/02/2009, 11h22
  3. [Windev 9] - Souci de parcours de requete SQL
    Par jimbololo dans le forum WinDev
    Réponses: 1
    Dernier message: 26/05/2008, 17h32
  4. Requete SQL sous interface windev
    Par rippoz dans le forum WinDev
    Réponses: 1
    Dernier message: 15/11/2007, 18h40
  5. [WinDev 10] Requête SQL - Récupérer valeur de la liste
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 22
    Dernier message: 23/10/2006, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo