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 la valeur d'une colonne d'une table d'une ligne précise


Sujet :

WinDev

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Salam
    Comment Récupérer la valeur d'une colonne "Nom" d'une table "Employé" d'une ligne précise "Matricule=10001" ?
    Merci

  2. #2
    Membre chevronné Avatar de Guardian
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    820
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 820
    Points : 1 808
    Points
    1 808
    Par défaut
    En lisant l'aide pour commencer
    Tu y trouveras l'information pour utiliser l'indice de la ligne dont tu veux récupérer l'information

  3. #3
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    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
    // Sans commentaire (ça c'est bizarre)
    SI Poseur_Question = "Paresseux"
    nNBColonne = TableOccurrence(uneTable,toColonne)
    // Parcours des lignes avec le fameux "_A_"
    POUR Indice = 1 _A_ uneTable..Occurrence
    	// Parcours des colonnes
    	POUR niColonne = 1 A nNbColonne
    		sUneColonne = TableEnumèreColonne(uneTable,niColonne)
    		SI ({sUneColonne, indChamp}..Nom = "Nom") et ({sUneColonne, indChamp}[Indice] = "Matricule=10001")
     
    		FIN		
    	FIN
    FIN

  4. #4
    Membre chevronné Avatar de Guardian
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    820
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 820
    Points : 1 808
    Points
    1 808
    Par défaut
    Citation Envoyé par gardangel Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Sans commentaire (ça c'est bizarre)
    SI Poseur_Question = "Paresseux"

  5. #5
    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

  6. #6
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    deux boucles pour récupérer la valeur d'une cellule, niveau optimisation c'est pas top.
    Il existe la fonction tablecherche() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    w_indice_ligne = tablecherche(Employé.Matricule,10001)
    w_valeur = Employé.Nom[w_indice_ligne]

  7. #7
    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
    J'aime cette réponse

  8. #8
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    J0r_x

    1) Fais le test et compares le temps réponse... Sois surpris;
    2) "Matricule=10001" porte a confusion et me laisse croire à un paramètre HTTP;

    J'aurais du ajouter un Sortir de boucle...

    Jean-François

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par gardangel Voir le message
    J0r_x

    1) Fais le test et compares le temps réponse... Sois surpris;
    2) "Matricule=10001" porte a confusion et me laisse croire à un paramètre HTTP;

    J'aurais du ajouter un Sortir de boucle...

    Jean-François
    Jean françois n'a pas tort. Il faut savoir qu'en wlanguage, la boucle POUR TOUT est particulièrement optimisé. Un ingénieur pcsoft me 'lavait expliqué lors d'une formation (bah oui ^^) et j'ai procédé a de nombreux test depuis. ET le POUR TOUT l'emporte presque toujours (bien que le hfiltre sur fichier soit aussi rapide pour hyperfile).

    Par contre jox a pas tort sur l'économie de lignes de code. On revient toujours à la séparation entre lisibilité et performance

  10. #10
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour
    Citation Envoyé par dedaelus Voir le message
    On revient toujours à la séparation entre lisibilité et performance
    On peut avoir les deux en codant ses propres fonctions

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par hpascal Voir le message
    Bonjour


    On peut avoir les deux en codant ses propres fonctions
    certes mais la, on passe dans une considération efficacité absolue versus temps passé

  12. #12
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Le temps passé en factorisation est vite amorti par la "ré-utilisabilité" du code

    Il faut bien sur que ça en vaille la peine, si c'est juste pour gagner 3 ms dans un traitement ce n'est le cas

  13. #13
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    Bah, pour l'économie de temps, suffit d'en faire une procédure globale avec de jolis petits paramètres... On y pense une fois, on code une fois, voilà.

    Il y a dix ans, mon premier mentor m'avait dit ceci : "un programmeur, c'est une personne paresseuse qui tend toujours vers la paresse".

    Et rien... jamais rien n'est absolu.

    Jean-François

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 815
    Points
    815
    Par défaut
    Salut !

    Je suis un peu stupéfait à la lecture de votre échange.

    Apparemment, vous trouvez "acceptable" qu'une fonction "built-in" soit moins performante qu'une procédure codée par vous même et fonctionnellement équivalente (c'est à dire qu'elle n'a pas de valeur ajoutée en terme de fonctionnalité ou de robustesse).

    Pour ma part, je ne trouve pas ça acceptable...

  15. #15
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    +1 @ OnePoint
    En outre notre jeune ami n'aura certainement pas compris que dans le monde WinDev, une table est un champ de fenêtre.... et l'amalgame son homonyme du coté de la base de données a, semble-t il échappé à tous.

    On reprends donc :
    Comment Récupérer la valeur d'une colonne "Nom" d'une table "Employé" d'une ligne précise "Matricule=10001" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cNom est une chaine
    SI hLitRecherchePremier(EMPLOYE,MATRICULE,"10001") ALORS cNom = EMPLOYE.NOM
     
    // Voila la variable cNom contient le nom ou rien !

  16. #16
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Citation Envoyé par OnePoint Voir le message
    ...
    Apparemment, vous trouvez "acceptable" qu'une fonction "built-in" soit moins performante qu'une procédure codée par vous même et fonctionnellement équivalente (c'est à dire qu'elle n'a pas de valeur ajoutée en terme de fonctionnalité ou de robustesse).

    Pour ma part, je ne trouve pas ça acceptable...
    @OnePoint : Là je suis entièrement d'accord, il faudrait remonter l'info au support car sinon il n'y a pas de raison que ça change. Entre temps on fait comme on peut pour contourner les choses inacceptables ...

    Ceci dit je n'ai pas testé la différence de performance entre les deux modes de recherche énumérés ci-dessus

    @R&B : Effectivement elghers_hocine ne parlait peut être pas d'un champ table.
    Mais je crois qu'il a lâché le sujet ...

  17. #17
    Membre habitué
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    One Point

    Ce qui est acceptable est une notion très relative... Je serais curieux de voir le code C++ en arrière de certaines fonctions. On pourrait être surpris de constater les raisons qui en font de certaines "moins" robuste. Pour la flexibilité peut-être ? Une notion d'incompétence peut-être (les programmeurs débutants, chez PCSoft, codent les fonctions primaires...qui sait ?).

    Pour R&B, ton affirmation est valide dans le contexte où l'applic est connectée sur une BD "fichier windev". En attendant un serveur, chez nous, j'utilise la messagerie Outlook comme "BD" temporaire... une petite applic jettable pour faire des suivis d'items sur le terrain (immo + contrat). Pas de BD "fichier" mais une gestion de courriels... Le défi est plus grand quand vient le temps de "plugger" mes données sur les zones du formulaire ET de l'état. Et pas question d'utiliser des fichiers (ou "table en windev") pour le moment.

    J'ai répondu "généralement" à la question...

    Jean-François

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/05/2015, 10h23
  2. [XL-2007] Récupérer la valeur de 2 colonnes de la ligne sélectionnée dans une ListBox
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/02/2015, 21h03
  3. Réponses: 5
    Dernier message: 26/07/2007, 21h13
  4. Réponses: 3
    Dernier message: 22/10/2006, 23h15
  5. Réponses: 4
    Dernier message: 26/04/2006, 17h43

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