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 :

Problème champ Combo requête


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Problème champ Combo requête
    Bonjour, j'ai un champ combo qui doit afficher tout les transporteurs que je rentre lors de l'ajout d'un véhicule dans ma table.
    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
    donneesTrans est une Source de Données 
     
    requeteTrans est une chaîne = "Select distinct Transporteur From Véhicule"// where Véhicule.Transporteur = transporteur
     
     SI HExécuteRequêteSQL(donneesTrans,requeteTrans) ALORS
     
    	HLitPremier(Véhicule,Véhicule.Transporteur) 
    	ListeSupprimeTout(cmb_trans)
    	TANTQUE PAS HEnDehors() 
    		HSuivant()
    		ListeAjoute(cmb_trans,Véhicule.Transporteur)
    		FIN
    	SINON 
    		Erreur()	
    	FIN
    Avec ce code la il m'affiche seulement un transporteur.
    J'aimerais savoir d'ou peut venir le problème.
    Nom : cmb.PNG
Affichages : 116
Taille : 8,0 Ko

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    La première chose que je vois c'est que tu exécutes une requête et qu'ensuite tu essayes de parcourir le fichier véhicule en lieu et p)lace de la requête.

    La deuxième est que ta boucle est complètement fausse. La parcours avec HLitPremier() ne se fait pas de cette manière. Lis l'aide sur cette fonction, l'exemple correspond exactement à ce que tu souhaites faire.
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 056
    Points : 9 394
    Points
    9 394
    Par défaut
    J'ajouterais une chose : l'indentation.

    Un code correctement indenté est lisible. Un code qui n'est pas correctement indenté, c'est illisible. Ici, on s'en sort, parce qu'il n'y a que 15 lignes. Mais dès que tu feras des choses un peu compliquées, tu ne pourras pas t'en sortir avec un code illisible.
    Dans Windev, il y a une fonctionnalité pour indenter correctement du code.

    D'autre part, en ligne 14, idem, tu appelles la fonction erreur(), mais sans aucun texte affiché. Le jour où ton programme affichera cette fenêtre, tu te poseras 1000 questions, alors que si tu mets un message explicite, ce sera beaucoup plus clair.

    Sinon 100% aligné avec les 2 points de philouZ.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci pour vos réponses,

    J'ai modifié mon code grâce a l'aide pcsoft et ce que vous m'avez dit.

    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
    20
    21
    22
    23
    donneesTrans est une Source de Données 
     
    requeteTrans est une chaîne = "Select distinct Transporteur From Véhicule"// where Véhicule.Transporteur = transporteur
     
     SI HExécuteRequêteSQL(donneesTrans,requeteTrans) ALORS
     
    	HLitPremier(donneesTrans,donneesTrans.Transporteur)
     
    	ListeSupprimeTout(cmb_trans)
     
    	TANTQUE HEnDehors(donneesTrans) = Faux  
     
    		HLitSuivant(donneesTrans,donneesTrans.Transporteur)
     
    		ListeAjoute(cmb_trans,donneesTrans.Transporteur)
     
    		FIN
     
    	SINON 
     
    		Erreur("requete sql Combo")	
     
    	FIN
    Lorsque que je test,

    "Que s'est-il passé ?
    Il n'existe pas de rubrique <0> dans le fichier <donneesTrans>."

    Je ne comprend peut-être pas l'erreur, mais ma source de donnée "donneesTrans" a bien enregistré différents transporteurs.

    Nom : données trans.PNG
Affichages : 104
Taille : 14,7 Ko

    EDIT : J'ai oublié de préciser que dans mon combo tout mes transporteurs sont égales a 0, alors que dans "donnéesTrans" il y a bien des prénoms différents.

  5. #5
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut ajouts " dans le code
    Bonjour,

    Je vois 2 problèmes. Le premier est la syntaxe de HLitPremier. Le deuxième paramètre doit être la clef de parcours, alors que tu indiques la valeur de "donnéestrans.transporteur". Remplaces par HLitPremier( "donneestrans", "transporteur"), ça devrait être mieux (même syntaxe pour HLitSuivant).
    Ensuite, tu places ton HLitSuivant avant l'ajout dans la combo. Du coup, tu vas perdre le premier enregistrement de donneestrans, et tu vas avoir une valeur erronée à la fin, car tu vas lire au delà de la requête (hendehors sera vrai, mais tu vas quand même ajouter le résultat).

    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
    20
    21
    22
    donneesTrans est une Source de Données 
     
    requeteTrans est une chaîne = "Select distinct Transporteur From Véhicule"// where Véhicule.Transporteur = transporteur
     
     SI HExécuteRequêteSQL(donneesTrans,requeteTrans) ALORS
     
    	ListeSupprimeTout(cmb_trans)
     
    	HLitPremier("donneesTrans","Transporteur")
     
    	TANTQUE HEnDehors(donneesTrans) = Faux  
     
    		ListeAjoute(cmb_trans,donneesTrans.Transporteur)
     
    		HLitSuivant("donneesTrans", "Transporteur")
    	FIN
     
    SINON 
     
        Erreur("requete sql Combo")	
     
    FIN
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci Le code marche !

    Juste une question, Pourquoi je n'ai pas besoin de dire dans quoi est ma rubrique "Transporteur" ?

    Pour finir si vous pouviez m'aiguiller sur quelles fonctions utiliser pour pouvoir actualiser ma table en fonction du transporteur sélectionné.(J'irais sur l'aide de pcsoft avant de venir vous solliciter)

    Hatcode

  7. #7
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Citation Envoyé par Hatcode Voir le message
    Merci Le code marche !
    Pas de quoi, mais je pense que tu devrais te pencher sur le guide d'auto formation de Windev, ça t'aiderait beaucoup

    Citation Envoyé par Hatcode Voir le message
    Juste une question, Pourquoi je n'ai pas besoin de dire dans quoi est ma rubrique "Transporteur" ?
    Ben, tu lui dis avec le premier paramètre. En gros HLitPremier( donneestrans, transporteur) ça se traduit en langage courant par : Lit le premier enregistrement de "donneestrans" en utilisant "transporteur" comme clef de tri.

    Citation Envoyé par Hatcode Voir le message
    Pour finir si vous pouviez m'aiguiller sur quelles fonctions utiliser pour pouvoir actualiser ma table en fonction du transporteur sélectionné.(J'irais sur l'aide de pcsoft avant de venir vous solliciter)
    Dans le code de sélection d'une ligne de ton champ combo, tu récupères le transporteur sélectionné et tu rafraichis ta table associée.

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/10/2016, 22h41
  2. [AC-2003] Problème champ calculé dans requête
    Par alu1308 dans le forum IHM
    Réponses: 2
    Dernier message: 31/07/2013, 11h17
  3. [AC-2010] Problème saisie champs pour requête
    Par Julianinho dans le forum Modélisation
    Réponses: 5
    Dernier message: 21/07/2011, 13h33
  4. [MySQL] Problème d'insertion de champs par requête
    Par lpldtrllt dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/05/2009, 17h20
  5. Problème FastReport et requête sur champ Blob
    Par RodEpsi dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/03/2007, 19h47

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