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 Interupteur dans une colonne [WD25]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut Problème Interupteur dans une colonne
    Salam alaikoum tous le monde,
    je travail sur une petit code pour réinscription d'étudiants, j'ai teste le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     //Réinscription des étudiant sélectionnés
     POUR TOUTE LIGNE DE TABLE_Tab_Etudiants 	
     
     
     	SI TABLE_Tab_Etudiants.COL_Select=Vrai ALORS
     	Trace("oui")
     	FIN
     
     FIN
    Mais rien ne se passe,

    Autres soucis, quand je coche une case et je me déplace dans la table, si la ligne coché est invisible, et quand je reviens sur cette ligne elle deviens décochée, comment faire pour qu'elle reste coché.

    Merci d'avance
    Cordialement

  2. #2
    Membre expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    1 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 1 898
    Points : 3 321
    Points
    3 321
    Par défaut
    Bonjour,
    Tu n'utilise pas l'indice de la ligne, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     POUR TOUTE LIGNE nLigneLue DE TABLE_Tab_Etudiants 	
      	SI TABLE_Tab_Etudiants[nLigneLue].COL_Select=Vrai ALORS
     	     Trace("oui")
     	FIN
    FIN
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     POUR TOUTE LIGNE DE TABLE_Tab_Etudiants 	
      	SI TABLE_Tab_Etudiants[IndiceEnCours()].COL_Select=Vrai ALORS
     	     Trace("oui")
     	FIN
    FIN
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    POUR nLigneLue=1 _A_ TableOccurence(TABLE_Tab_Etudiants)
      	SI TABLE_Tab_Etudiants[IndiceEnCours()].COL_Select=Vrai ALORS
     	     Trace("oui")
     	FIN
    FIN
    En ce qui concerne la remise à zéro de la colonne, il faut passer par un tableau de structure/classe pour remplir le champ table
    Il y a peut être plus simple, mais ça tourne

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    J'ai opté pour le 3 code et ça marche bien.
    Pour les classes je n'est jamais programmé avec les classes, je vais galérer

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 841
    Points : 1 458
    Points
    1 458
    Par défaut
    tu aurais aussi tout simplement pu passer ta table en table fichier mémoire ce qui t'éviterai de faire des classes ou des structures.
    Philippe,


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

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    3 311
    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 : 3 311
    Points : 7 593
    Points
    7 593
    Par défaut
    Oui,
    Je pense que c'est essentiel de comprendre ce qui se passait dans la version du début. Parce que, en plus, je pense que ce n'est pas résolu.

    Tu as fait une table fichier.
    Le principe d'une table fichier, c'est que c'est fait pour afficher des tables éventuellement énormes. Des millions de lignes.
    L'ordinateur ne garde pas en mémoire les millions de lignes en question.
    Quand tu demandes à afficher des lignes, le programme va lire dans la base de données les lignes en question. Si tu fais défiler les lignes, il va lire les nouvelles lignes. Si tu reviens en arrière, pareil, il va lire dans la base de données les lignes. Il ne se souvient pas du contenu de ce qu'il a déjà affiché.

    Si tu fais des modifications, en cochant des interrupteurs, il faut sauvegarder ces modifications , avant qu'elles ne disparaissent de l'écran. Sinon, elles sont perdues.
    Donc par exemple hEnregistre() dans le code 'Sortie de ligne'

    Ca va modifier le contenu de tes fichiers. A priori, c'est ce que tu veux. Mais je ne sais pas.

    Je n'utilise jamais les tables fichiers. Je crois que si on modifie des colonnes de texte ou numériques, par défaut, il enregistre systématiquement. Mais pas pour les colonne interrupteurs. Si quelqu'un sait confirmer ça ...
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Membre expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    1 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 1 898
    Points : 3 321
    Points
    3 321
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Je n'utilise jamais les tables fichiers. Je crois que si on modifie des colonnes de texte ou numériques, par défaut, il enregistre systématiquement. Mais pas pour les colonne interrupteurs. Si quelqu'un sait confirmer ça ...
    C'est aussi valable pour une colonne interrupteur (si on a coché la case qui va bien i.e. "Enregistre en sortie de ligne" dans la partie "Détail")
    C'est une des raisons pour laquelle, pour les champ tables "mixtes" je passe par un tableau de classes, mes données restent "propres". C'est aussi le cas por les affichages issus d'une requête.
    Prenons le cas d'un traitement spécifique "momentané" (e.g. impression si la case est cochée)
    Je crée ma classe mappée basée sur les données qui doivent être traitée, j'ajoute mon membre booléen, et je base mon champ table sur un tableau de cette classe
    Un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FichierVersTableau(tabMonTableauDeClasse,MaTable)
    TableAffiche(TABLE_MonChampTable)
    Fait le reste
    Si les données sont destinées à être modifiée, je les récupère via MémoireVersFichier à l'issue
    Il y a peut être plus simple, mais ça tourne

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    Salam alaikoum tous le monde,

    1- le but de ce code c'est de réinscrire des étudiants sélection à un niveau supérieure (exemple réinscrire des étudiants de l'année n, de l'année universitaire passée, dans l'année n+1, de l'année en cours), un étudiant peut abandonné, donc uniquement qui ont dépose un dossier de réinscription, qui seront réinscrits.
    2- ma table est relier a une requête, sauf la colonne interrupteur elle n'est pas relier à aucune table.

  8. #8
    Membre expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    1 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 1 898
    Points : 3 321
    Points
    3 321
    Par défaut
    Ton cas entre bien dans ce que je décrivais dans le post 7.
    Supposons que ta requête (REQ_Etudiant) pour remplir ton champ table ressemble à ça :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT
         PK_Etudiant,
         AK_MatriculeEtudiant AS Matricule,
         NDX_NomEtudiant AS Nom,
         PrénomEtudiant AS Prénom,
         .....
    FROM
         .....
    WHERE
         ....

    Il suffit de te créer un classe (qui est plus pratique que la structure car on peut la mapper) MEtudiant
    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
     
    MEtudiant est une Classe <MAPPING=REQ_Etudiant>
     
    	// Le code se trouvant entre <MAPPING> et <FIN> est généré automatiquement.
    	// Il sera effacé et recréé entièrement à chaque génération depuis le menu contextuel
    	// du fichier dans l'explorateur de projet "..Regénérer la classe modèle".
    	<MAPPING>
    	m_pkEtudiant		est un entier sur 8 octets	        <MAPPING=PK_Etudiant, clé unique>
    	m_saMatricule    	est une chaîne           		<MAPPING=AK_MatriculeEtudiant>
    	m_saNom  		est une chaîne    			<MAPPING=NDX_NomEtudiant>
            m_saPrénom             est une chaine                            <MAPPING=PrénomEtudiant>
            //Autres colonnes de la requête                 
           <FIN>
            m_bDossierOK          est booléen
    FIN
    Il suffit alors de créer un tableau de MEtudiant global à la fenêtre (e.g gtabEtudiant).
    Ton champ table sera relié à ce tableau dans la partie contenu :
    Nom : screenshot_31-08-2021 15h49_n°01.png
Affichages : 52
Taille : 2,0 Ko
    Les colonnes de la table seront reliée aux membres dans la partie liaison.
    L'initialisation de la fenêtre se fait comme expliqué plus haut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FichierVersTableau(gtabEtudiant,REQ_Etudiant)
    TableAffiche(TABLE_Etudiant)
    et le tour est joué
    Il y a peut être plus simple, mais ça tourne

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    J'ai testé de remplir la table_etudiants par programmation à partir de la REQ_Etudiants.
    quand je défile ma table les cases cochés reste coché

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/01/2012, 14h25
  2. Réponses: 2
    Dernier message: 14/12/2010, 12h22
  3. [XL-2007] Probléme pour séléctionner une ligne sur trois dans une colonne
    Par ro31hg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2010, 20h48
  4. Réponses: 1
    Dernier message: 04/07/2008, 11h14
  5. Problème de cumule dans une colonne
    Par gadjo72 dans le forum Débuter
    Réponses: 5
    Dernier message: 24/04/2008, 21h24

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