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 :

[Forms]AIDE Forms developer


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Par défaut [Forms]AIDE Forms developer
    Bonjour à tous,

    j'ai un problème avec forms et j'aurais besoin d'aide

    Mon problème est le suivant:

    J'ai une table PROJETS dont la clé primaire est ID_PROJET
    J'utilise FORMS afin de pouvoir saisir des données dans cette table.
    Or je souhaite que lors de la saisie, on ait pas besoin d'entrer ID_PROJET et que cette clé s'incrémente automatiquement.

    Je valide la saisie via un bouton OK.
    J'ai donc cherché à mettre un trigger when button pressed:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    declare 
     
    n number;
     
    Begin
    select max(ID_PROJET) into n from projets;
    insert into projets 
    (ID_PROJET,NUM_PROJET,ANNEE,NB_MAX_GROUPES)
    values(n,:num_projet,:annee,:nb_max_groupes);
    commit;
    end;
    Cependant cela ne marche pas...
    Si quelqu'un pouvait m'aider...
    Merci

  2. #2
    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
    Créez une séquence et utilisez-la dans le trigger PRE-INSERT de votre bloc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE SEQUENCE ma_sequence ;
    Trigger PRE-INSERT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select ma_sequence.nextval Into :mon_bloc.ma_colonne_pk ;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut
    Bizarre je fais exatement ça sur Forms 10g et ça ne fonctionne pas du tout.
    Quand je veux enregistrer il me dit erreur aucun numero de saisi.

    Donaldo

  4. #4
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 59
    Par défaut
    je pense que tu a oublié de mettre max +1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    declare
     
    n number;
     
    Begin
    select max(ID_PROJET) +1 into n from projets;
    insert into projets
    (ID_PROJET,NUM_PROJET,ANNEE,NB_MAX_GROUPES)
    values(n,:num_projet,:annee,:nb_max_groupes);
    commit;
    end;

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par enjoy
    Cependant cela ne marche pas...
    Eh bien nous voilà bien avancé... Il n'y a pas une erreur ? Sinon qu'entends tu par "ça ne marche pas" ?

    Enfin le select max est quand même à éviter sur un trigger PRE-INSERT, car ce trigger est exécuté pour chaque ligne insérée et si ta table projets a un volume important, les perf. ne vont pas être terribles.

    Comme te l'a suggéré SheikYerbouti, utilise plutôt une séquence si la numérotation peut comporter des trous.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut
    Tout simplement quand je saisie une fiche, le numéro qui doit se mettre automatiquement ne se met pas.
    J'ai suivi ce que SheikYerbouti a fait.

    Donaldo

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Bonjour ,

    J'ai essayé ce code est ca marche bien , mais il faut utiliser forms_ddl pour effectuer l'insert et le commit au niveau de la base
    when new_record_instance ou tu peux utiliser le pre_insert comme il a mentionné Mr Sheik Yerbouti avec une séquence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    declare 
    n number:=0;
    Begin
    if :system.record_status in ('INSERT','NEW') THEN 
    	SELECT max(ID_PROJET) +1 INTO n FROM projets;
    	:ID_PROJET:=N;
    END IF;
    END ;
    et dans le when_button_presse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Begin
    FORMS_DDL('INSERT INTO projets (ID_PROJET,NUM_PROJET,ANNEE,NB_MAX_GROUPES)
             VALUES(:ID_PROJET,:num_projet,:annee,:nb_max_groupes)';
    FORMS_DDL('commit');
    COMMIT_FORM;
     
    end;
    end;

  8. #8
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Bonjour ,

    mais tu peux mettre tout le code dans le when-button-pressed mais tu vois le numero de ID_PROJET uniquement quand tu presses sur le boutton OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    declare 
    n number:=0;
    Begin
    	SELECT max(ID_PROJET) +1 INTO n FROM projets;
    :ID_PROJET:=N;
    FORMS_DDL('INSERT INTO projets
                  (ID_PROJET,NUM_PROJET,ANNEE,NB_MAX_GROUPES)
                 VALUES(:ID_PROJET,:num_projet,:annee,:nb_max_groupes)');
    FORMS_DDL('commit');
    COMMIT_FORM;
    end;

Discussions similaires

  1. aide :form en visuel basic
    Par seksaki dans le forum VB.NET
    Réponses: 0
    Dernier message: 26/02/2009, 11h53
  2. [Besoin d'aide] passé un attribut de form en form
    Par toulouseadr dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/03/2007, 09h24
  3. [Forms]aide sur forms builder
    Par poutsi dans le forum Forms
    Réponses: 1
    Dernier message: 05/01/2007, 19h59
  4. [Forms]aide sur oracle 9i et forms6
    Par rara_rara dans le forum Forms
    Réponses: 1
    Dernier message: 21/10/2006, 10h30
  5. [Forms]image sous developer 2000
    Par souchraf dans le forum Forms
    Réponses: 1
    Dernier message: 12/05/2006, 19h41

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