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

Forms Oracle Discussion :

checkbox + supprimer


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 80
    Par défaut checkbox + supprimer
    bonjour tt le monde

    j'ai crée un bloc de données (de type tabulaire) d'une table :employé(numero,nom,...), et j'ai défini la colonne 'numero' comme une case à cocher
    comment procéder pour 'supprimer' les employés cochés avec un bouton "supprimer"

    merci d'avance

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tu parcoures sur ton block, et quand la ligne est cochée, tu fais un delete_record.
    Attention, il y a un piège : quand tu fais un delete_record, le curseur passe sur la ligne suivante (donc faut pas faire de next_record dans ce cas)

    Exemple simplifié (reste à gérer le changement de record sur le delete_record et le fait de supprimer le dernier enregistrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    GO_BLOCK('mon_block');
    First_Record;
    LOOP
     IF checkbox_checked('mon_block.ck') THEN DELETE_RECORD; 
     END IF;
    EXIT WHEN :system.last_record = 'TRUE';
    NEXT_RECORD;
    END LOOP;

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    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
     
    GO_BLOCK('mon_block');
    First_Record;
    LOOP
       IF checkbox_checked('mon_block.ck') THEN DELETE_RECORD; 
       Else
          If  :system.last_record <> 'TRUE' Then
             Next_Record ;
          End if ;
       END IF;
       EXIT WHEN :system.last_record = 'TRUE';
    END LOOP;

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Marche pas si les 2 dernières lignes sont cochées : Le delete record de l'avant dernière ligne passe à la dernière ligne, et tu sors.

    Voici un code que j'avais fait (mais qui faisait d'autres calculs donc plus compliqué : Il ne fallait surtout pas revérifier une ligne, d'où le test sur la variable i)
    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
    FIRST_RECORD;
     
    LOOP
    	i := :SYSTEM.cursor_record;
     
    IF NOT checkbox_checked('block2.ck')
    THEN
     
      EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
      NEXT_RECORD;
     
    -- Sinon, on delete la ligne			
    ELSE
      DELETE_RECORD;	
      IF :SYSTEM.cursor_record < i THEN EXIT; END IF;
      IF :SYSTEM.LAST_RECORD = 'TRUE' AND NOT checkbox_checked('block2.ck')
      THEN EXIT;
      END IF;
    END IF;
     
    END LOOP;

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Le NEXT_RECORD n'est fait que si l'on ne DELETE pas, donc ça doit fonctionner dans tous les cas.

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Bein, non, j'ai testé justement

    imagine 2 lignes cochées

    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
    GO_BLOCK('mon_block');
    First_Record;
    -- ligne1
    LOOP
       IF checkbox_checked('mon_block.ck') THEN DELETE_RECORD; 
    -- Ligne1 supprimée, le curseur passe à la ligne 2
     
     Else
    -- On n'y passe pas
          If  :system.last_record <> 'TRUE' Then
             Next_Record ;
          End if ;
       END IF;
    -- On sort, car on est sur la dernière ligne (ligne2 qui est devenue ligne1)
       EXIT WHEN :system.last_record = 'TRUE';
    END LOOP;
    Résultat il reste une ligne à l'écran (la ligne2) et elle est cochée.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/06/2015, 16h01
  2. Réponses: 3
    Dernier message: 08/03/2010, 05h29
  3. [MySQL] supprimer une ligne d'une base de données via un checkbox
    Par sniper_marra dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 15/08/2008, 11h51
  4. [Conception] Supprimer une ligne d'un tableau à partir d'un CHECKBOX
    Par snakejl dans le forum PHP & Base de données
    Réponses: 71
    Dernier message: 30/05/2006, 08h43
  5. [MySQL] Plusieurs enregistrement à supprimer depuis un checkbox
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 26/12/2005, 14h08

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