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 update manuel


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut faire un update manuel
    Bonjour,
    je souhaite pouvoir mettre a jour les données de ma BD mais sans passer par le menu de forms, c'est a dire a travers un bouton que je developperai moi meme.
    j'ai un bloc basé sur ma table et un bouton editer, dans le When-button-pressed j'ai mis un Commit_form, et dans le On-update du bloc j'ai placé ma requête sql du update, maais ça ne marche pas.
    Ai-je oublié quelque chose??
    Merci d'avance!

  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,
    maais ça ne marche pas.
    c'est à dire ?
    Merci de donner un peu plus d'information ( le code du bouton par exemple)
    Le block basé et le update manuel porte sur la même table ?
    Si oui pourquoi essayez-vous de derouter forms ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut
    Bonjour,
    oui en effet le bloc basé et le update portent sur la même table, j'essaye de faire cela pour ne pas avoir à utiliser le menu de Forms,voici le code que j'ai mis dans le When-button-pressedc'est un seul bouton qui permet d'autoriser la saisie et la modification sur les champs, et la mise à jour, et ceci en fonction du label):
    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
     
    begin
     
    if get_item_property('rech.editer',label)='Editer' then
     
    	set_item_property('rech.editer',label,'valider');
    	set_item_property('employe.cinemp',update_allowed,property_true);
    	set_item_property('employe.cinemp',insert_allowed,property_true);
     
    	set_item_property('employe.nomemp',update_allowed,property_true);
    	set_item_property('employe.nomemp',insert_allowed,property_true);
     
    	set_item_property('employe.prenomemp',update_allowed,property_true);
    	set_item_property('employe.prenomemp',insert_allowed,property_true);
     
    	set_item_property('employe.dtnaissemp',update_allowed,property_true);
    	set_item_property('employe.dtnaissemp',insert_allowed,property_true);
     
    	set_item_property('employe.sexeemp',update_allowed,property_true);
    	set_item_property('employe.sexeemp',insert_allowed,property_true);
     
    	  set_item_property('employe.sitfamilialeemp',update_allowed,property_true);
    	     set_item_property('employe.sitfamilialeemp',insert_allowed,property_true);
     
    	set_item_property('employe.adremp',update_allowed,property_true);
    	set_item_property('employe.adremp',insert_allowed,property_true);
     
    	set_item_property('employe.telemp',update_allowed,property_true);
    	set_item_property('employe.telemp',insert_allowed,property_true);
     
    	set_item_property('employe.anc',update_allowed,property_true);
    	set_item_property('employe.anc',insert_allowed,property_true);
     
    else
    	set_item_property('rech.editer',label,'Editer');	
    	If :SYSTEM.FORM_STATUS = 'CHANGED' Then
       Commit_Form ;
    End if ;
    end if;
    end;
    et dans le On-update du bloc j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
    update employe
    set cinemp = :cinemp,nomemp = :nomemp,prenomemp = :prenomemp,dtnaissemp = :dtnaissemp,sitfamilialeemp = :sitfamilialeemp,sexeemp = :sexeemp,adremp = :adremp,telemp = :telemp,anc = :anc
    where matricule = :txt_matricule
    or nomemp = :txtnom and prenomemp = :txtprenom;
    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
    bonjour,
    si le block est basé le commit_form suffit a declencher la mise a jour
    nul besoin de devoir le coder manuellement

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut
    Bonjour,
    je viens de tester mais j'ai l'erreur FRM-40508 quand je verifie l'erreur ça dit que c'est impossible d'insérer Null dans la PK de ma table,comme s'il essayait de faire une insertion et non pas une mise à jour!

  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
    Est-ce que vous n'avez pas le même problème que la dernière fois
    A savoir un block basé mais que vous remplissez par programme et non avec execute_query .
    Si le block est rempli par programme (curseur + boucle) et que le block est basé
    alors forms considère que ce sont de nouveaux enregistrements.
    Si l'on veux que forms gere les insert,update et delete seul il faut que le block soit basé et rempli par execute_query.
    Sinon il faut déclarer le block non basé (plus besoin de commit_form) et coder en pl/sql la maj de la table.

Discussions similaires

  1. Faire un update avec une ss requete renvoyant plusieur row
    Par djodjo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/09/2005, 15h51
  2. [Debutant] faire un update sur tout une table
    Par Karibou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 14h44
  3. Réponses: 7
    Dernier message: 26/07/2005, 16h41
  4. [ SQL ] Faire un update avec un select imbriqué
    Par zozolh2 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/04/2005, 12h05
  5. faire un update partiel
    Par danseur dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 19/01/2004, 18h27

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