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 :

Récupérer le résultat d'une requête


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Points : 101
    Points
    101
    Par défaut Récupérer le résultat d'une requête
    Bonjour à tous

    J'exécute une requête Paramétrée qui renvoie plusieurs lignes de résultat et je souhaite récupérer l'ensemble de ces résultats pour les insérer dans une table avec Tableajoute()

    Le problème est que après avoir exécuté la requête, je la lis avec HLitRecherche mais en retour j'ai uniquement la première ligne du résultat qui s'ajoute dans ma table et non l'ensemble des lignes.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 256
    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 256
    Points : 12 919
    Points
    12 919
    Par défaut
    Bonjour,
    Comment voir ce qui ne va pas dans ton code, sans voir le code en question ?

    Tatayo.

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Points : 101
    Points
    101
    Par défaut
    Ok voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    POUR TOUT LigneCommande  AVEC LigneCommande.NumCde = TABLE_Commande.COL_NumCommande
    	RQ_RechercheLigneCmde.Param1=TABLE_Commande.COL_NumCommande
    	HExécuteRequête(RQ_RechercheLigneCmde)
    	HLitRecherche(RQ_RechercheLigneCmde,RQ_RechercheLigneCmde.NumCde,TABLE_Commande.COL_NumCommande)
    	TableAjouteLigne(TABLE_LigneCmde,LigneCommande.IdLigneArticle,LigneCommande.DateAjout,LigneCommande.QtVendu,RQ_RechercheLigneCmde.Reference,...
    	RQ_RechercheLigneCmde.Taille,LigneCommande.PrixVente,LigneCommande.QtVendu*LigneCommande.PrixVente)
    	ExécuteTraitement(TABLE_LigneCmde.COL_Quantite,trtModification)
    	HLibèreRequête(RQ_RechercheLigneCmde)
     
    FIN

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Points : 101
    Points
    101
    Par défaut
    Le problème est que l'instruction TableAjouteLigne ajoute à chaque ligne de ma table la première ligne du résultat de ma requête. Or ma requête comporte plusieurs lignes et je souhaite ajouter toute ces lignes en lieu et place de la première ligne de la requête.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    Salut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    SI PAS HExécuteRequête(TaRequete,hAvecFiltre,param1,param2) ALORS
    	Erreur(HErreurInfo())
    	RETOUR
    FIN
     
    SI PAS HLitPremier(TaRequete) ALORS
    	Erreur(HErreurInfo())
    	RETOUR
    FIN
     
     
    TANTQUE HEnDehors(tarequete) = Faux 
     
    	//Traitement 
    	//...
     
    	HLitSuivant(tarequete)
    FIN

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 256
    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 256
    Points : 12 919
    Points
    12 919
    Par défaut
    Très honnêtement, je ne peux que te conseiller deux choses:
    1. Bien relire l'aide en ligne des fonctions que tu utilises
    2. Faire le guide d'auto-formation


    Pose un point d'arrêt sur la première ligne, puis trace ton code pas à pas.
    Tu devrais comprendre sans problème où se trouve ton erreur.

    Tatayo.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    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
    14
    15
    16
    //Pour tout ligne de LigneCommande où NumCde = .COL_NumCommande
    POUR TOUT LigneCommande AVEC LigneCommande.NumCde = TABLE_Commande.COL_NumCommande
    	//Applique le param1 a la requête
    	RQ_RechercheLigneCmde.Param1=TABLE_Commande.COL_NumCommande
    	//Lance la requête sans gestion d'erreur.
    	HExécuteRequête(RQ_RechercheLigneCmde)
    	//On laisse tomber la requête et on recherche une ligne dans la requête ? où NumCde = COL_NumCommande
    	HLitRecherche(RQ_RechercheLigneCmde,RQ_RechercheLigneCmde.NumCde,TABLE_Commande.COL_NumCommande)
    	//On ajoute une ligne dans la table avec l'informations récuperée par le "POUR TOUT"
    	TableAjouteLigne(TABLE_LigneCmde,LigneCommande.IdLigneArticle,LigneCommande.DateAjout,LigneCommande.QtVendu,RQ_RechercheLigneCmde.Reference,...
    	RQ_RechercheLigneCmde.Taille,LigneCommande.PrixVente,LigneCommande.QtVendu*LigneCommande.PrixVente)
    	//Éxécute le code Modification de la colonne Quantité
    	ExécuteTraitement(TABLE_LigneCmde.COL_Quantite,trtModification)
    	//Libère la requête
    	HLibèreRequête(RQ_RechercheLigneCmde)
    FIN


    En gros, pour chaque ligne lue de LigneCommande ( POUR TOUT *), tu exécutes ta requête sans savoir si elle s'est bien exécutée. Tu recherches une seule ligne dans ta requête dont NumCde correspond à COL_NumCommande. Tu ajoutes une ligne dans ta table avec les informations de ton fichier et non de ta requête.


    Je te conseille fortement d'utiliser les syntaxes suivantes.


    Code widnev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    //On recherche tous les LigneCommande where NumCde  = param1 ( TABLE_Commande.COL_NumCommande)
     
    SI PAS HExécuteRequête(RQ_RechercheLigneCmde,hAvecFiltre,TABLE_Commande.COL_NumCommande) ALORS
            //On sort ici en général quand aucune données ne peut être lue.
    	Erreur(HErreurInfo())
     
    	RETOUR
    FIN
     
    SI PAS HLitPremier(RQ_RechercheLigneCmde) ALORS
    	Erreur(HErreurInfo())
    	RETOUR
    FIN
     
     
    TANTQUE HEnDehors(RQ_RechercheLigneCmde) = Faux 
     
     
    	//Traitement, procède ici à tes vérifications (SI ALORS)
     
            //Double vérification que Numcde ai le bon numéro
            si RQ_RechercheLigneCmde.NumCde  = TABLE_Commande.COL_NumCommande alors
                 TableAjouteLigne(TABLE_LigneCmde,RQ_RechercheLigneCmde.IdLigneArticle,RQ_RechercheLigneCmde.DateAjout,RQ_RechercheLigneCmde.QtVendu,RQ_RechercheLigneCmde.Reference,...
    	RQ_RechercheLigneCmde.Taille,RQ_RechercheLigneCmde.PrixVente,RQ_RechercheLigneCmde.QtVendu*RQ_RechercheLigneCmde.PrixVente)
            fin
     
     
    	HLitSuivant(RQ_RechercheLigneCmde)
    FIN


    Bonne chance & bon dev

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 64
    Points
    64
    Par défaut
    Bonjour
    1er point , il faut respecter la règle de postage de code c'est à dire clic sur le dièse qui met les balises.
    2ème point , tu essaies d'abord les propositions

    Merci

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 64
    Points
    64
    Par défaut
    Bonjour
    Je pense que la syntaxe la plus simple est la suivante ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HExécuteRequête(la requete,hRequêteDéfaut,paramêtres d’exécution)
    TableSupprimeTout(TABLE_X)
    HLitPremier(la requete)
    TANTQUE PAS HEnDehors(la requete)
    	SI HTrouve(la requete) ALORS
    		TableAjouteLigne(TABLE_X, la requete.x1, la requete.x2, la requete.x3)	
    	FIN
    	HLitSuivant(la requete)
    FIN
    Cette syntaxe permet de parcourir la requête. Tu vas évidemment adapter le code à ton cas .
    Nicolas

  10. #10
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Points : 204
    Points
    204
    Par défaut
    je ne comprend toujours pas comment on peut croire qu'on peut faire de la programmation sans apprendre à programmer.
    dans le code de "findjo" il est claire pour moi qu'il n'a aucune idée du fonctionnement de la fonction HlitRecherche.
    ça me fait penser à quelque'un qui fait une grillade dans un micro-onde.

    excuser moi mais si vous n'êtes pas capable de lire la doc des fonctions que vous utilisez, passez à autre choses.

  11. #11
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    @findjo

    Je vous conseille d'éviter de voter négatif à toutes les réponses qui ne fonctionnent pas pour vous ou que vous ne comprenez pas.

    Je remarque que tous les intervenants ont un point négatif.

    Je m'abstiens donc d'apporter quelque aide que ce soit vu la gratitude en réponse.

    J'ose espérer que c'est par méconnaissance.

  12. #12
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 451
    Points
    2 451
    Par défaut
    Citation Envoyé par zouzoukha Voir le message
    @findjo

    Je vous conseille d'éviter de voter négatif à toutes les réponses qui ne fonctionnent pas pour vous ou que vous ne comprenez pas.

    Je remarque que tous les intervenants ont un point négatif.

    Je m'abstiens donc d'apporter quelque aide que ce soit vu la gratitude en réponse.
    Ouais !
    Bien beau ça !

    Et qu'est-ce que je fais maintenant, zouzoukha ?
    -1 ou +1 ?
    oserais-je encore... ?
    Je me sens comme dépossédé


    Bon, j'ai osé

  13. #13
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    Je vous conseille d'éviter de voter négatif à toutes les réponses qui ne fonctionnent pas pour vous ou que vous ne comprenez pas.

    Je remarque que tous les intervenants ont un point négatif.

    Je m'abstiens donc d'apporter quelque aide que ce soit vu la gratitude en réponse.

    J'ose espérer que c'est par méconnaissance.

    Je pensais justement la même choses, on prend le temps d'aider des membres, trouver le bon code, faire nos recherche, etc. Au finale, on se ramasse avec des notes négatives qui ne donne plus vraiment envie de donner des réponses et d'offrir son aide.

  14. #14
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    looool

    Hemgé, il a osé

Discussions similaires

  1. Récupérer le résultat d'une requête UNION
    Par brazza dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/01/2007, 21h33
  2. [JTable] Récupérer le résultat d'une requête SQL
    Par malik1982 dans le forum Composants
    Réponses: 10
    Dernier message: 08/07/2006, 19h52
  3. Réponses: 3
    Dernier message: 16/10/2005, 11h53
  4. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07
  5. Réponses: 7
    Dernier message: 30/06/2005, 10h06

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