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 :

Comment créé des variable dynamiquement suite à une requête ? [WD14]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Comment créé des variable dynamiquement suite à une requête ?
    Bonjour,

    je stock dans une table des données de type :

    |nomtable |taux |
    |tx_cuisson |16.0000 |
    |tx_melange |16.0000 | .....

    je souhaiterai qu'en retour de requete lorsque que je parcours mes résultats (7 au total), je construise dynamiquement des variables du type :
    nom de variable = nom table
    valeur variable = taux

    Quelqu'un aurait il une idée ?

    zat

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    A mon avis, il faut utiliser les indirections (voir l'opérateur {} dans l'aide), et le parcours des HListeRubrique.

    Par contre, je ne comprends pas bien ce que tu vas pouvoir faire de ces variables...

  3. #3
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 801
    Points
    3 801
    Par défaut
    Bonjour..

    Tu peux créer utiliser un tableau de chaines à deux dimensions

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    @Bowen,

    je veux utiliser ces valeurs pour des calculs dans un état et celles-ci ne changeront pas lors de la génération de cette état, donc je m'en servirai comme des constantes en fait au moment de la génération de mon état.

    zat

  5. #5
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 801
    Points
    3 801
    Par défaut
    Dans ce cas utilise un tableau associatif que tu déclara en variable global à ton projet

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    @mail.spam,

    j'ai déjà tenté le tableau ce qui me gène dans cette solution c'est que poour obtenir une valeur du tableau il faut le parcourir à chaque fois en entier et je ne trouve pas cela très pratique à moins que je me trompe sur l'usage des tableau.
    A l'origine mon code ressemblait à cela :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    taTabvaleur est un tableau associatif (AvecDoublon + ccSansAccent + ccSansCasse + ccSansEspace + ccSansPonctuationNiEspace) de numériques
    TANTQUE PAS HEnDehors(REQ_ETAT_recup_taux_horaire)
    	taTabvaleur[REQ_ETAT_recup_taux_horaire.nom_table] = REQ_ETAT_recup_taux_horaire.taux
    	HLitSuivant(REQ_ETAT_recup_taux_horaire)
    FIN

  7. #7
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    Comme ça en passant l'idée me vient d'une structure
    Gancau

  8. #8
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    En fouillant un peu dans l'aide ur le type structure, tu trouves :
    // Déclarer une variable de type structure
    RefProduit est une structure
    CodeF est un entier
    CodePr est une chaîne fixe sur 10
    FIN
    Fauteuil est une RefProduit
    // Manipuler un membre d'une variable de type structure
    RefProduit est une structure
    CodeF est un entier
    CodePr est une chaîne fixe sur 10
    FIN
    Fauteuil est une RefProduit
    Fauteuil:CodeF = 7
    Fauteuil:CodePr = "Meuble"
    Si cela peut t'aider...
    Gancau

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    Non, là, désolé, mais je vois toujours pas l'intérêt.

    Pourquoi tu n'accèdes pas directement au résultat de ta requête ? Les données y sont constantes, tant que tu ne ré-exécutes pas ta requête, elles ne changeront pas.

    Je dois rater un truc dans ton raisonnement sinon... ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    @Bowen,

    voici le contenu des ces fameuses valeurs. L'intérêt de les mettre en variables, c'est que si j'ai besoin de la valeur, j'appelle la variable directement. SI mes données sont dans un tableau ou issues d'une requete, il faudra que je parcours à chaque fois que j'ai besoin d'une de ces valeurs la totalité. Ces taux vont me servir lors de calcul de prix de revient sachant que j'en ai plusieurs donc plusieurs appels à ces valeurs et donc à mon avis l'optimisation ne serait pas au rendez vous si je parsais à chaque fois la totalité. Je ne sais pas si je suis plus claire pour toi maintenant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    "Nom_table"	"taux"     -> colonnes de ma table
    "tx_melange"	"16.0000"
    "tx_expedition"	"16.0000"
    "tx_commun"	"16.0000"
    "tx_carton"	"16.0000"
    "tx_barquette"	"16.0000"
    "tx_autres"	"16.0000"
    "tx_rapage"	"16.0000"
    "tx_legumerie"	"16.0000"
    "tx_cuisson"	"16.0000"
    "tx_preparation"	"16.0000"
    "tx_sauce"	        "16.0000"

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    Bon, alors je résume, et ce que j'ai compris, et tu me dis si c'est bon ?

    1. Tu as 7 tables, qui contiennent toutes une colonne "taux"
    2. Tu as plusieurs lignes dans ces 7 tables
    3. Tu veux parcourir les tables, et totaliser des résultats dans 7 variables différentes.
    4. Tu veux ensuite lire ces 7 variables, et les afficher dans ton état.

    J'ai bon ?
    EDIT : Je parle de tables au sens windev, pas de fichiers, qu'on soit bien d'accord

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    @bowen,

    je te remercie de vouloir m'aider tout d'abord, ensuite j'ai une table (au sens sql) qui a cette structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE `taux_horaire` (
      `id_tx_horaire` int(11) NOT NULL auto_increment,
      `libelle` varchar(255) NOT NULL,
      `nom_table` varchar(255) NOT NULL,
      `taux` double(6,4) unsigned NOT NULL,
      `date_creation` date NOT NULL,
      `date_modification` date NOT NULL,
      `login` varchar(255) NOT NULL,
      PRIMARY KEY  (`id_tx_horaire`),
      UNIQUE KEY `nom_champ` (`nom_table`),
      KEY `IDX_libelle` (`libelle`)
    ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1
    Dans cette table, j'ai 7 enregistrements (pour les données cf ci dessus) et je veux que chaque enregistrement deviennent une variable par ex :

    tx_melange est un numerique = 16.0000

    Suis je miantenant de mon coté un peu plus clair

    zat

  13. #13
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    Oui, ça devient plus clair, ton champ "nom_table" créait une confusion...
    Bon, alors je crois que c'est simple, et ce n'est pas moi qui ait avancé la solution.
    Il faut (comme l'a dit mail.spam je crois) utiliser un tableau associatif.
    Contrairement à un tableau normal, le tableau associatif n'a pas besoin d'être parcouru pour retrouver une valeur
    Code de l'aide windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // Remplit un tableau associatif avec les tailles de fichiers
    taTailleFichier est un tableau associatif d'entiers
    taTailleFichier["Fichier1.txt"] = fTaille("Fichier1.txt")
    taTailleFichier["Fichier2.txt"] = fTaille("Fichier2.txt")
    
    // Récupère la taille d'un fichier
    Trace(taTailleFichier["Fichier2.txt"])    //!!cette ligne te renvoie directement ta valeur de ftaille
    
    // Parcours les tailles des fichiers
    sFichier est une chaîne
    nTaille est un entier
    POUR TOUT ELEMENT nTaille,sFichier DE taTailleFichier
       Trace(ChaîneConstruit("%1 : %2",sFichier,nTaille)) 
    FIN
    Donc pour toi, ça se traduit par
    Code du remplissage de tableau : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    taTauxHoraire est un tableau associatif de numériques
    POUR TOUT taux_horaire
        taTauxHoraire[taux_horaire.nom_table] = taux_horaire.taux
    FIN
    puis, sans aucun parcours
    Code de l'accès direct à la ligne "tx_carton" : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LIB_taux_de_carton = taTauxHoraire[tx_carton]

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Super,

    dire que j'avais tenté le tableau associatif mais pas comme vous me le conseillais.

    G E N I A L !!! Ca fonctionne nickel, que du bonheur

    Merci en attendant à vous !

    zat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 11/07/2008, 15h58
  2. [Dates] injecter une variable dynamique dans une requête
    Par omar071286 dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2008, 10h51
  3. nombre des variables dynamique dans une fonction
    Par Abdelkaoui dans le forum C
    Réponses: 10
    Dernier message: 29/02/2008, 16h37
  4. [SQL] insérer des variables php dans une requête sql
    Par lili38 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 22/06/2007, 17h38
  5. Comment creer des variables dynamiques ?
    Par lonyc dans le forum ASP
    Réponses: 4
    Dernier message: 11/12/2006, 16h54

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