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

PL/SQL Oracle Discussion :

Passer les paramètres d'un formulaire checkbox à une procédure


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Passer les paramètres d'un formulaire checkbox à une procédure
    Bonsoir,

    Je m'en remets de nouveau à vous car je rencontre un problème lors du passage de paramètres de mon formulaire.
    Mon problème est simple : je souhaite supprimer des enregistrements dans ma BDD à partir d'infos cochées par l'utilisateur.
    Une procédure contenant le formulaire affiche des informations sous forme de tableau, avec pour chaque ligne une case à cocher.
    Le clic sur le bouton "Delete" fait appel à une procédure contenue dans un package devant supprimer les objets sélectionnés de la BDD. Mais la procédure est sans effet...

    Voici mon code :

    Table utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create table PROJECTS (
      ID_PROJ number(3),
      NAMEP varchar2(10)
    );
    Formulaire :
    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
     
    CREATE OR REPLACE PROCEDURE ProjectList
    IS
    	CURSOR curs IS select ID_PROJ, NAMEP
    	from PROJECTS;
     
    BEGIN
     
    	HTP.FORMOPEN('Project.deleteProject');
    	HTP.TABLEOPEN('LIST');
    	HTP.TABLEROWOPEN;
    		HTP.TABLEHEADER('Select');
    		HTP.TABLEHEADER('Name');
    	HTP.TABLEROWCLOSE;
     
    	FOR line IN curs LOOP
    		HTP.TABLEROWOPEN;
    		HTP.PRINT('<td> <input type="checkbox" name="names" value="' ||line.NAMEP||' ">');
    		HTP.TABLEDATA(line.NAMEP);
    		HTP.TABLEROWCLOSE;
    	END LOOP;
     
    	HTP.TABLECLOSE;
    	HTP.formSubmit(cvalue=>'DELETE');
    	HTP.FORMCLOSE;
     
     
    END;
    Le package :
    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
     
    CREATE OR REPLACE PACKAGE Project AS
    list_empty owa_util.ident_arr;
    PROCEDURE deleteProject (names IN owa_util.ident_arr := list_empty);
     
    END Project;
    / 
     
    CREATE OR REPLACE PACKAGE BODY Project AS
    	PROCEDURE deleteProject (names IN owa_util.ident_arr := list_empty)
    	IS
    		i INTEGER;
    	BEGIN
     
    		IF (names.count > 0) THEN
    			FOR i IN names.first..names.last
    			LOOP
                                    HTP.PRINT(names(i)); /* The name of the project appears well */
                                    delete from PROJECT where NAMEP = names(i);
    			END LOOP;
    		END IF;
    		HTP.PRINT('Succes');
    		commit;
    	END;
    END Project;
    /
    La méthode utilisée n'est autre que celle décrite ici :
    http://download.oracle.com/docs/cd/B...b.htm#CHEJIFDF

    Dans ma variable "names" de type "owa_util.ident_arr", je contiens bien le nom des projets sélectionnés puisqu'ils s'affichent correctement lors du "HTP.PRINT(names(i));". Mais comme je l'ai dit plus haut, le delete est sans effet...

    Je me suis assuré que la procédure deleteProject fonctionnait correctement en effectuant le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE PROCEDURE testsuppr
    IS
    v_names owa_util.ident_arr;
    BEGIN
        v_names(1) := 'TEST1';
        v_names(2) := 'TEST2';
     
        Project.deleteProject(v_names);
    END;
     
    /* "TEST1" et "TEST2" supprimés de la BDD */
    J'en ai donc conclu que le problème venait des variables stockées à partir de mon formulaire dans mon "owa_util.ident_arr"... Seulement, je ne comprends pas pourquoi


    Si vous avez des idées ou une explication, je suis preneur !
    Merci d'avance.

    Cordialement

    F2B

  2. #2
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    J'ai finalement contourné le problème en effectuant la suppression sur les IDs au lieu des noms.
    Il semblerait donc que le type owa_util.ident_arr manipule les chaînes autrement...

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

Discussions similaires

  1. [MVC] [Spring MVC] recevoir tous les paramètres d'un formulaire dans une liste
    Par judy-brainy dans le forum Spring Web
    Réponses: 1
    Dernier message: 01/05/2016, 23h57
  2. passer les paramètres à une fonction javascript
    Par phenix1988 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/01/2012, 23h19
  3. Passer les paramètres d'une activité à une listeView
    Par anastunisie dans le forum Android
    Réponses: 44
    Dernier message: 19/05/2011, 16h45
  4. passer les paramètres d'un formulaire
    Par techtonyc dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 24/04/2007, 13h58
  5. passer des paramétres d'un formulaire à une requête
    Par lasmarmann dans le forum Access
    Réponses: 1
    Dernier message: 24/10/2006, 09h37

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