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 :

Décocher des interrupteurs dans une table


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Décembre 2011
    Messages : 57
    Points : 49
    Points
    49
    Par défaut Décocher des interrupteurs dans une table
    Salut à Tous

    J'ai trois tables:une table prestation,une table rdv et la table coiffeurs toute ces tables ont une colonne avec interrupteur.Lorsqu'on coche l'interrupteur de la table prestation (on peut en cocher plusieurs)et que l'on coche l'interrupteur de la table coiffeurs alors les lignes sont automatiquement ajoutées dans la table rdv avec les identifiants des tables rdv et coiffeurs ,là je n'ai pas de problème.
    Si je décoche un coiffeur (l'interrupteur de la table coiffeurs) alors il ya suppression des prestations qu'il a effectuée dans la table rdv(car un coiffeurs peut effectuer un ou plusieurs prestations) ,il n’y a toujours pas de problème au niveau de la suppression,cependant le problème que je rencontre actuellement est que si lorsque le coiffeur est décoché et que ses prestations sont supprimer on doit pouvoir aussi décocher ses prestations précédemment coché,dans mon cas s'il y'a par exemple trois prestations ,c'est la 1 ère qui est décochée et pas les 2 autres.

    voici mon code:
    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
    i,y,t,u,r sont des entiers
    t =TableOccurrence(TABLE_Rdv)
    i = TableCherche(TABLE_Rdv.COL_IdCoiffeurs,y)
    SI i=-1 
     
    //code de suppression des prestations dans la table (qui marche:)
    POUR u=t A 1 PAS -1
         SI TABLE_Rdv.COL_IdCoiffeurs[u]=Val(y) ALORS
    	    TableSupprime(TABLE_Rdv,u)	
    	 FIN 
     
    //code pour décocher les prestations sélectionées (qui marche pas)
     POUR r=t A 1 PAS -1
    		SI TABLE_Coiffeurs.COL_IdPrest[r]=TABLE_Rdv.COL_IdPrestation[r] ALORS
    		   TABLE_Coiffeurs.COL_Colonne1[r]=Faux
    		FIN
       FIN
    Comment y parvenir ?

    Merci d'avance

  2. #2
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Pas très sur de comprendre ce que tu fais, mais ne faut-il pas que tu décoche dans la table TABLE_Coiffeurs avant de supprimer les RDV
    vu que pour décocher tu testes SI TABLE_Coiffeurs.COL_IdPrest[r]=TABLE_Rdv.COL_IdPrestation[r]...
    donc si pas de RDV pas de décoche ???
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Décembre 2011
    Messages : 57
    Points : 49
    Points
    49
    Par défaut Décocher des interrupteurs dans une table
    Salut à tous.

    c'est vrai laurent30s autant pour moi il faudrait que je décoche dans la table TABLE_Coiffeurs avant de supprimer les RDV,donc le code pour décocher les prestations sélectionné est au dessus de celui du code de suppression.

  4. #4
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Très bien clique sur
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Décembre 2011
    Messages : 57
    Points : 49
    Points
    49
    Par défaut Décocher des interrupteurs dans une table
    En fait mon problème n'est pas encore résolu,puisque comme je l'avais dit si par exemple 3 élément sont supprimés,je devais avoir les 3 interrupteurs décochés ,mais c'est seulement le premier qui est décoché

  6. #6
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Désolé mais avec le peu d'info que tu donnes et notamment des bouts de codes qui semblent tronqués je ne suis pas en mesure de t'aider plus...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Décembre 2011
    Messages : 57
    Points : 49
    Points
    49
    Par défaut Décocher des interrupteurs dans une table
    OK ,voici mes interface en pièces jointes ,interface1 : présentation sans données et interface2 avec données,je rappelle le principe:
    -on sélectionne les prestations dans Liste des prestations en les cochant (la colonne ou il ya les interrupteurs c'est la colonne 1)
    -ensuite on sélectionne le coiffeur dans Liste des Coiffeurs,dès que le coiffeur est coché automatiquement la Table Rdv se remplie dans Détails Rdv

    mon problème est que si je décoche le coiffeur toutes ses prestations cochés ne se décoche pas, dans mon exemple sur l'interface2 il décoche le premier interrupteur et pas les 2 autres ,comment y parvenir? par contre la suppression marche dans la table Rdv

    voici le code (le code se trouve dans la partie :A modification de COL_Colonne1 de la table Coiffeurs

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
     
    // j'ai créé des tableaux pour pourvoir remplir ma table Rdv,ces tableaux sont à une dimension ,ils sont globale et définis dans le code du projet
    //gtabT_coiffeur
    //gtabT_Nomcoiff
    //gtabT_prest
    //gtabT_MontantPrest
    //gtabT_prest_Decoche
     
    i,j,k,y,x,t,u,r sont des entiers
    t =TableOccurrence(TABLE_Rdv)
    k=Dimension(gtabT_prest)
     
     
    SI TABLE_Coiffeurs.COL_Colonne1=Vrai ALORS
    	Ajoute(gtabT_coiffeur,TABLE_Coiffeurs.COL_IdCoiffeurs[TableSelect(TABLE_Coiffeurs)])
    	Ajoute(gtabT_Nomcoiff,TABLE_Coiffeurs.COL_Ident_Coiff[TableSelect(TABLE_Coiffeurs)])
     
    SINON SI TABLE_Coiffeurs.COL_Colonne1=Faux ALORS
     
    	y=(TABLE_Coiffeurs.COL_IdCoiffeurs[TableSelect(TABLE_Coiffeurs)])
    	i = TableCherche(TABLE_Rdv.COL_IdCoiffeurs,y)
    	x = TableauCherche(gtabT_coiffeur,tcLinéaire,y)
     
    	SI i=-1 ET x=-1 ALORS
    	Info("Aucun resultant")
     
    	SINON
    	Avertissement("Toutes les prestations associées à cet coiffeurs seront supprimées seront supprimées")	
     
    // On compare les identifiants de la table Prestation et Rdv en les parcourant si on trouve alors on décoche les prestations
     
       nb est un entier
       nb= Dimension(gtabT_prest_Decoche)
     
      POUR r=nb A 1 PAS -1
        	SI TABLE_Prestation.COL_IdPrest[r]=TABLE_Rdv.COL_IdPrest[r] ALORS
    		   TABLE_Prestation.COL_Colonne1[r]=Faux
    	       TableauSupprime(gtabT_prest_Decoche,r)
    		FIN
     
       FIN 	
     
       // Ensuite on suppression de toutes les prestations du coiffeur l'employé qui est   désélectionner (décoché)
     
       POUR u=t A 1 PAS -1
         SI TABLE_Rdv.COL_IdCoiffeurs[u]=Val(y) ALORS
    	    TableSupprime(TABLE_Rdv,u)	
    	 FIN 
     
       	FIN
     
    // je vide les tableau car si je coche sur une prestations et que je coche sur coiffeur ,il va réajouter les prestations déjà sélectionnées
    	TableauSupprimeTout(gtabT_coiffeur)
    	TableauSupprimeTout(gtabT_Nomcoiff)
    	TableauSupprimeTout(gtabT_prest)
    	TableauSupprimeTout(gtabT_MontantPrest)
    FIN	
    FIN
     
    // Ajout des données dans la table Rdv a partir des champs et des tableau 
    POUR i=1 A k
     SI t=0 ALORS
    	TableAjouteLigne(TABLE_Rdv,SAI_Date_Traitment..Valeur,SAI_Heure_Traitment..Valeur,gtabT_prest[i],gtabT_coiffeur[1],SAI_IdClient_RDV..Valeur,gtabT_MontantPrest[i],gtabT_Nomcoiff[1])
    FIN
    Images attachées Images attachées   

  8. #8
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Tout d'abord je ne sais pas pourquoi tu t'embêtes avec des tableaux. Peut-être que tu as de bonnes raisons mais il me semble que tu dois pouvoir faire autrement, d'autant que être obligé de synchroniser les tables + les tableaux peut être source d'erreur. Ça se fait mais il faut être très rigoureux...

    Perso j'aurais fait des requêtes paramétrées et j'aurais rempli les tables par programmation.
    C'est plus franc, il y a moins de risque...

    A priori je pense que tu remplis les tables par programmation
    J'essaye de comprendre ton HIM
    Les interrupteurs dans les tables prestations et coiffeurs permettent de remplir la table RDV.
    Comme je ne vois pas de bouton qui permet de faire cette action, je suppose qu'elle est faite à chaque modification des interrupteurs.
    Ai-je bien compris ?

    J'ai reproduit un petit test. Les tables prestations et coiffeurs sont remplies à leur initialisation avec TableAjouteLigne().
    J'ai supposé qu'un seul coiffeur peut être sélectionné donc
    - lors de la sélection d'un coiffeur --> déselection de tous les autres
    - lors de la déselection d'un coiffeur (y-en plus de sélectionné) --> décoche toutes les prestations
    Le reste du code...

    A chaque modification de la colonne interrupteur de la table prestations
    A chaque modification de la colonne interrupteur de la table coiffeurs
    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
    nNo_lig_en_cours est un entier = IndiceEnCours()
     
    // décoche si un autre coiffeur coché (y-en a peu on parcours toute la table)
    POUR TOUTE LIGNE DE TABLE_Coiffeurs
    	SI nNo_lig_en_cours <> IndiceEnCours() ALORS
    		TABLE_Coiffeurs.COL_Colonne1 = Faux
    	FIN	
    FIN
    // rempli la table rdv
    Rempli_Rdv()
    // si pas de coiffeur décoche les prestations (y-en a peu on parcours toute la table)
    SI TABLE_Coiffeurs.COL_Colonne1[TABLE_Coiffeurs] = Faux ALORS
    	POUR TOUTE LIGNE DE TABLE_Prestation
    		TABLE_Prestation.COL_Colonne1[TABLE_Prestation] = Faux
    	FIN
    FIN
    La procédure Rempli_Rdv()
    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
    PROCEDURE Rempli_Rdv()
    nIndice_coiffeur est un entier
     
    // Vide la table rdv
    TableSupprimeTout(TABLE_Rdv)
     
    // rempli la table rdv
    nIndice_coiffeur = TableCherche(TABLE_Coiffeurs.COL_Colonne1,Vrai)
    SI nIndice_coiffeur <> -1 ALORS
    	POUR TOUTE LIGNE DE TABLE_Prestation
    		SI TABLE_Prestation.COL_Colonne1 = Vrai ALORS
    			TableAjouteLigne(TABLE_Rdv,SAI_Date_Traitment,SAI_Heure_Traitment,TABLE_Prestation.COL_IdPrest, ...
    							TABLE_Coiffeurs.COL_IdCoiffeurs[nIndice_coiffeur],TABLE_Prestation.COL_Montant, ...
    							TABLE_Coiffeurs.COL_Ident_Coiff[nIndice_coiffeur])
    		FIN	
    	FIN
    FIN
    En espérant avoir bien compris le comportement que tu veux obtenir...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

Discussions similaires

  1. Réponses: 14
    Dernier message: 22/09/2005, 16h49
  2. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  3. Réponses: 2
    Dernier message: 15/06/2005, 17h32
  4. Eliminer des Doublon dans une Table
    Par Soulama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2005, 14h27
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53

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