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 :

faire un lien en pl sql


Sujet :

Forms Oracle

  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut faire un lien en pl sql
    PS: c'est urgent

    bonjour a tous voila je sui débutante en oracle et je prépare mon memoire j doi gerer une BDDD sous oracle pour cela je cherche une aide pour
    1- programmer un lien en plsql en forms: si on clique dedan il affichera une nouvelle page concerné
    2- ajouter kelk chose j fai un code juste mai il marche pas tjr en plsql
    sur l boutton ajouter jai fai
    insert into soutenance values ('2','12/06/2009', '17', 'tres bien')
    mais il marche pas en attente d'une réponse de votre part tts mes salutation je vous remercie a la vance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Par défaut
    Bonjour,
    si tu veux un peu d'aide, il va falloir donner un peu plus de détail:
    -Version de la base , de forms , etc..
    Et détailler un peu mieux les problèmes, par ce que "ça marche pas" ne permet pas de comprendre le problème

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut Lien dans PLSQL
    je vous remercie pour le détaille:
    j'utilise oracle 10g, forms, et je cherche comment faire un lien si par exemple je clique sur consulter il affichera une autre page ou il aura toute les consultation vous voyez

    et aussi j un code sur l curseur dans l'exécution y'a pas d'erreur mais il affiche rien
    ce code sert a afficher la mention de toutes les soutenance dont la moyenne = 18 voici l code si vous pouvez m'aider sa serai très gentil de votre part car c'est une urgence:
    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
     
    DECLARE 
     
    	CURSOR sout IS SELECT id_sout,date_sout, moyenne, mention  from soutenance; 
    	ment soutenance.mention%TYPE;
    	id_s soutenance.id_sout%TYPE;
    	date_s soutenance.date_sout%TYPE;
    	moy soutenance.moyenne%TYPE;
    	envoyer VARCHAR2 (12);
    BEGIN 
    	OPEN sout;
    	LOOP
     
    	FETCH sout INTO id_s,date_s,moy,ment;
    	SELECT mention INTO envoyer FROM soutenance WHERE moyenne='18';
    	:soutenance.text_item7:=envoyer;
    	END LOOP;
    	CLOSE sout;
    	 END;

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    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
    13
    14
    15
    16
    17
    18
    19
     
    DECLARE 
     
    CURSOR sout IS SELECT id_sout,date_sout, moyenne, mention from soutenance; 
    ment soutenance.mention%TYPE;
    id_s soutenance.id_sout%TYPE;
    date_s soutenance.date_sout%TYPE;
    moy soutenance.moyenne%TYPE;
    envoyer VARCHAR2 (12);
    BEGIN 
    OPEN sout;
    LOOP
     
    FETCH sout INTO id_s,date_s,moy,ment;
    SELECT mention INTO envoyer FROM soutenance WHERE moyenne='18';
    :soutenance.text_item7:=envoyer;
    END LOOP;
    CLOSE sout;
    END;
    bonjour,
    Quelque remarque:
    -Vous pouvez faire les SELECT .. INTO directement dans l'item de l'ecran
    (pas besoin de la variable envoyer)
    -Il manque un test sur la fin du parcours du curseur, avant END LOOP; mettre Exit When sout%NOTFOUND ;

    Voila , bon courage

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut Lien dans PLSQL
    slt je vous remercie encore une fois mais jai pas compri ce que vous voulez dire par
    Il manque un test sur la fin du parcours du curseur, avant END LOOP; mettre Exit When sout%NOTFOUND ;

    si vous me donnez un detail sa sera tres gentil de votre part merci

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Par défaut
    vous parcourez un curseur avec une boucle LOOP .. END LOOP
    si vous ne testez pas la fin du curseur vous risquer d'avoir une boucle infinie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FETCH sout INTO id_s,date_s,moy,ment;
    Exit When sout%NOTFOUND
    SELECT mention INTO envoyer FROM soutenance WHERE moyenne='18';
    :soutenance.text_item7:=envoyer;
    END LOOP;
    CLOSE sout;
    voir aussi
    http://sheikyerbouti.developpez.com/...=Chap1#L1.2.22

  7. #7
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut
    bonjour Mr je vous remercie, jai fais ce que vous m'avez conseiller mais c'est la meme chose il n'affiche rien il me dit cette erreur:

    FRM-40735: le déclencheur WHEN-BUTTON-PRESSED a détécté une exeption ORA-01422 non traitée.
    puis il affiche rien
    hors que jai 3 enregistrement qui ont la moyenne 16
    c'est quoi le probleme j'arrive pas à l résoudre
    merci a l'avance

    ah jai oublié voici le 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
    18
    19
    DECLARE 
     
        CURSOR sout IS SELECT id_sout,date_sout, moyenne, mention  from soutenance; 
        ment soutenance.mention%TYPE;
        id_s soutenance.id_sout%TYPE;
        date_s soutenance.date_sout%TYPE;
        moy soutenance.moyenne%TYPE;
        envoyer varchar2(22);
    BEGIN 
        OPEN sout;
        LOOP
     
        FETCH sout INTO id_s,date_s,moy,ment;
        SELECT mention INTO envoyer FROM soutenance where moyenne='16';
        :soutenance.text_item7:=envoyer;
    Exit When sout%NOTFOUND;
        END LOOP;
        CLOSE sout;
         END;

  8. #8
    Invité
    Invité(e)
    Par défaut
    ORA-01422: exact fetch returns more than requested number of rows

    Ça serait le minimum de votre part de faire au moins la recherche Google pour essayer de comprendre votre erreur, qui est clairement explicité dans votre cas !!!

    De plus, je vous renvoie à nouveau à la lecture de ce document :
    http://sheikyerbouti.developpez.com/...=Chap1#L1.2.22
    pour apprendre comment faire des curseurs.

  9. #9
    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
    Voire, les curseurs FOR LOOP, plus simple à utiliser.http://sheikyerbouti.developpez.com/...=Chap1#L1.2.13

  10. #10
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut pl sql
    bonsoir, je nes toujour pas compri ce vous avez dit tout a lheur car j suis encoe débutante dans oracle je vous rend ma question
    voici l'erreur qui m'affiche:
    FRM-40735: le déclencheur WHEN-BUTTON-PRESSED a détécté une exeption ORA-01422 non traitée
    et voici le code source:
    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
    DECLARE 
     
        CURSOR sout IS SELECT id_sout,date_sout, moyenne, mention from soutenance; 
        ment soutenance.mention%TYPE;
        id_s soutenance.id_sout%TYPE;
        date_s soutenance.date_sout%TYPE;
        moy soutenance.moyenne%TYPE;
        envoyer varchar2(22);
    BEGIN 
        OPEN sout;
        LOOP
     
        FETCH sout INTO id_s,date_s,moy,ment;
        SELECT mention INTO envoyer FROM soutenance where moyenne='16';
        :soutenance.text_item7:=envoyer;
    Exit When sout%NOTFOUND;
        END LOOP;
        CLOSE sout;
         END;
    jai besoin d'une réponse en urgence svp veuillez m'aider

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 316
    Par défaut
    bonjour,
    l'erreur que tu as :
    ORA-01422: exact fetch returns more than requested number of rows

    veux dire que ton select .. into renvoie plus de 1 résultat et ne peut donc pas être affecté a une seule variable (c'est a dire que tu a plusieurs soutenance avec une moyenne de 16 et donc plusieurs lignes)
    Il faut soit avoir un select plus restrictif (ne ramener qu'une ligne) soit utiliser
    un curseur pour ramener les réponses.

    Parcours aussi les liens qui t'on été donné et essaye de comprendre le probleme,
    ne te contente pas de coller le source en demandant de l'aide urgente.

    bon courage

  12. #12
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut pl sql
    je vous remercie pour laide que vous mavez porté mais sachez que ce code marche tres bien sur le shell SQL plus mais j l'execute sur plsql il fais rien il marche pas qu'est ce que je vais faire????

  13. #13
    Membre expérimenté Avatar de mongilotti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2003
    Messages : 314
    Par défaut
    Bonjour Lamiss,
    d'abord le code que tu as mis est bizzard car tu n'as pas utilisé le curseur,
    c'est vrai que tu parcours le curseur mais tu n'utilise pas les lignes retournés dans le curseur, car ton SELECT fait une nouvelle interrogation sur la même table utilisé dans le curseur,

    tu peux me dire ton besoin exacte dans ce code?

    On commence par améliorer le 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
    18
    19
    20
    21
     
    DECLARE 
        CURSOR SOUT IS 
    	  SELECT id_sout,date_sout, moyenne, mention 
    	  FROM   soutenance; 
        V_SOUT SOUT%ROWTYPE;
     
        envoyer varchar2(22);
    BEGIN 
        OPEN SOUT;
        LOOP
           FETCH SOUT INTO V_SOUT;
    	   EXIT WHEN SOUT%NOTFOUND;
    		SELECT mention 
                    INTO envoyer 
                    FROM soutenance
                    WHERE moyenne='16';
    		:soutenance.text_item7:=envoyer;
        END LOOP;
        CLOSE SOUT;
    END;
    reste à voir l'utilité du SELECT dans la boucle, et l'utilisation des lignes du curseur.

  14. #14
    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
    Moi j'aurais amélioré comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BEGIN 
      FOR r IN (SELECT id_sout, date_sout, moyenne, mention FROM soutenance)
      LOOP
            SELECT mention 
            INTO :soutenance.text_item7 
            FROM soutenance
            WHERE moyenne='16';
      END LOOP;
    END;
    En effet, on voit bien que le code fait n'importe quoi

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/12/2011, 17h21
  2. Réponses: 13
    Dernier message: 20/10/2005, 13h42
  3. [Excel] Faire des liens internes à une feuille
    Par Invité dans le forum Excel
    Réponses: 1
    Dernier message: 25/08/2005, 12h04
  4. faire un lien vers un site avec un post en simultané
    Par zolive dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/08/2005, 10h07

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