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 :

Valeur colonne table toujours nulle même si cochée (remplie) [WD22]


Sujet :

WinDev

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut Valeur colonne table toujours nulle même si cochée (remplie)
    Bonjour,
    J'ai une table basé sur une requête dans laquelle j'ai ajouté une colonne avec un interupteur (J'ai aussi essayé de la mettre en texte classique)

    J'ai un bouton qui me permet (Devrais me permettre) de traiter les lignes cochées.

    Mon code est relativement simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR TOUTE LIGNE DE TABLE_REQ
    	Trace(TABLE_REQ.COL_DesignationArticle+" - "+TABLE_REQ.COL_Coche)
    	SI TABLE_REQ.COL_Coche=Vrai ALORS
    		Trace("Colonne cochée")
    	FIN		
    FIN
    La valeur de TABLE_REQ.COL_Coche est toujours égale à 0.

    J'ai changé le type de la colonne par du texte et la valeur est égale à ""

    Quelqu'un peut m'éclairer? Car là, je ne comprend pas trop !

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    J'ai essayé aussi TABLE_REQ.COL_Coche=1 desfois que. Mais non.
    Elle reste toujours à 0

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    je n'ai jamais remplie de table par requête, mais par programmation uniquement (je suis plus à l'aise quand c'est par programmation), mais d'après ce que je comprends, un tel comportement est normal, car la table ne fait que afficher le résultat de la requête.

    Pour pouvoir interagir avec les lignes souhaitées, ce que je ferais :
    - soit on oublie le système de case à cocher et on fait par rapport aux lignes sélectionnées par l'utilisateur
    - soit remplir la table par programmation

    Peut-être qu'il y a possibilité de s'en sortir par requête, dans ce cas là, je laisse quelqu'un d'autre répondre

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    A mon avis, il manque tout simplement l'indice de la ligne à traitée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR TOUTE LIGNE i DE TABLE_REQ
    	Trace(TABLE_REQ[i].COL_DesignationArticle+" - "+TABLE_REQ[i].COL_Coche)
    	SI TABLE_REQ[i].COL_Coche=Vrai ALORS
    		Trace("Colonne cochée")
    	FIN		
    FIN

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    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 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Une idée comme ça.

    Fais ce test :
    - Lance la requête qui remplit la table.
    - Sur la table affichée, clique sur l'interrupteur sur quelques lignes, et modifie la description colonne COL_DesignationArticle aussi sur quelques lignes
    - puis lance ton traitement.

    Il affiche la description d'origine, ou la description modifiée ?
    Si par hasard il affiche la description d'origine, ça voudrait dire que dans le cas de table BASEE sur une requête, la boucle POUR TOUT ... relit le résultat de la requête, au lieu de lire ce qui est affiché à l'écran ?

    Perso, j'utilise beaucoup des tables mémoires remplies par programmation ( donc basée sur rien du tout...), et je n'ai pas ce souci.
    Pour la relecture, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    n = tableoccurrence(matable)
    pour i = 1 a n
      si matable.col_coche[i] ) alors
         //  traitement (i)
       fin 
    fin
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Lo² Voir le message
    Bonjour,

    A mon avis, il manque tout simplement l'indice de la ligne à traitée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR TOUTE LIGNE i DE TABLE_REQ
    	Trace(TABLE_REQ[i].COL_DesignationArticle+" - "+TABLE_REQ[i].COL_Coche)
    	SI TABLE_REQ[i].COL_Coche=Vrai ALORS
    		Trace("Colonne cochée")
    	FIN		
    FIN
    Merci

    Mais je l'avais testé aussi hier.
    Avec ou sans l'indice, dans ma trace j'ai bien le contenu de la COL_DesignationArticle et dans la COL_Coche j'ai toujours 0

    Merci

  7. #7
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Une idée comme ça.

    Fais ce test :
    - Lance la requête qui remplit la table.
    - Sur la table affichée, clique sur l'interrupteur sur quelques lignes, et modifie la description colonne COL_DesignationArticle aussi sur quelques lignes
    - puis lance ton traitement.

    Il affiche la description d'origine, ou la description modifiée ?
    Si par hasard il affiche la description d'origine, ça voudrait dire que dans le cas de table BASEE sur une requête, la boucle POUR TOUT ... relit le résultat de la requête, au lieu de lire ce qui est affiché à l'écran ?

    Perso, j'utilise beaucoup des tables mémoires remplies par programmation ( donc basée sur rien du tout...), et je n'ai pas ce souci.
    Pour la relecture, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    n = tableoccurrence(matable)
    pour i = 1 a n
      si matable.col_coche[i] ) alors
         //  traitement (i)
       fin 
    fin
    Alors,
    Bizarement la donnée dans la trace correspond bien au contenu visible de la table. Sauf la coche qui reste à 0 !

    Par contre, avec ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    soit n=TableOccurrence(TABLE_REQ)
    POUR i = 1 A n
    	Trace(TABLE_REQ[i].COL_DesignationArticle+" - "+TABLE_REQ[i].COL_Coche)
    	Trace(TABLE_REQ.COL_DesignationArticle[i]+" - "+TABLE_REQ.COL_Coche[i])
    FIN
    La valeur de COL_Coche est bien à 1 quand elle est coché.

    Je ne comprend pas trop !


    PS : Vous pouvez me dire la différence entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TABLE_REQ[i].COL_DesignationArticle
    TABLE_REQ.COL_DesignationArticle[i]
    ?

    Merci

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    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 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Les 2 syntaxes TABLE_REQ[i].COL_DesignationArticle et TABLE_REQ.COL_DesignationArticle[i] sont strictement interchangeables.

    Mais si on utilise des zones répétées, dans une zone répétée, il y a des champs et des attributs, et pour les attributs ( ou pour les champs, une chance sur 2...), seule une des 2 syntaxes est acceptée ; bizarre.

    Sur la coche qui ne marche pas, c'est très bizarre. C'est certainement lié à une autre bizarrerie que j'avais remarquée.
    Dé mémoire c'était sur la propriété ..modifié
    On peut tester en SORTIE de ligne si la ligne a été modifiée.
    Sauf que ce flag ..modifié ne se met à jour que lors de modifications sur les champs de type texte ou nombre, pas sur les interrupteurs.
    Peut-être qu'en mettant un petit bout de code dans la portion 'a chaque modification de col_coche'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    matable..modifie = vrai
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Les 2 syntaxes TABLE_REQ[i].COL_DesignationArticle et TABLE_REQ.COL_DesignationArticle[i] sont strictement interchangeables.

    Mais si on utilise des zones répétées, dans une zone répétée, il y a des champs et des attributs, et pour les attributs ( ou pour les champs, une chance sur 2...), seule une des 2 syntaxes est acceptée ; bizarre.

    Sur la coche qui ne marche pas, c'est très bizarre. C'est certainement lié à une autre bizarrerie que j'avais remarquée.
    Dé mémoire c'était sur la propriété ..modifié
    On peut tester en SORTIE de ligne si la ligne a été modifiée.
    Sauf que ce flag ..modifié ne se met à jour que lors de modifications sur les champs de type texte ou nombre, pas sur les interrupteurs.
    Peut-être qu'en mettant un petit bout de code dans la portion 'a chaque modification de col_coche'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    matable..modifie = vrai
    Il me semble avoir eu un cas de ce genre...
    Tu as ajouté une colonne dans la table qui n est pas dans la requête ?
    J avais dû mettre la table en mémoire et non accès direct.
    Ça se trouve dans la description de la table.
    En espérant que ce soit bien ça.

  10. #10
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    Bonjour

    Du coup hier j'ai changé mon contenu. je rempli par programmation. Et maintenant le pour tout fonctionne.

    Par contre je viens d'apprendre aussi qu'il y avait une fonction ..modifie.

    Merci

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

Discussions similaires

  1. [SQLite] Colonne reçoit toujours "null"
    Par janyoura dans le forum Android
    Réponses: 1
    Dernier message: 12/12/2012, 01h29
  2. comparaison valeurs colonne sur une même table
    Par nsylvain10 dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/08/2011, 15h42
  3. Réponses: 4
    Dernier message: 13/11/2007, 09h01
  4. [JTextField] getText renvoie toujours la même valeur
    Par Sufflope dans le forum Composants
    Réponses: 4
    Dernier message: 13/01/2007, 01h12
  5. [ORA-22908] référence à une valeur de table NULL!!!
    Par Manoutch dans le forum Oracle
    Réponses: 1
    Dernier message: 08/02/2006, 07h09

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