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 :

Bloc multi-row avec set_item_property


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 122
    Par défaut Bloc multi-row avec set_item_property
    Bonjour,

    Sous Forms 10G, j'ai un bloc multi-row avec plusieurs lignes de données.
    Dans une des colonnes il y a un champs statut.
    Quand la valeur de ce champs est à 'A' alors la ligne ne doit pas etre modifiable, mais les autres lignes qui ont une valeurs différentes peuvent être modifiables.

    J'essais d'utiliser un set_item_property dans un trigger when_new_record_instance du bloc pour mettre 'enabled' tout les champs de la ligne. Ca ne fonctionne pas, message frm-41032.

    A quelle endroit faut-il mettre la validation?

    J'ai essayé avec un go_item sur un autre champs, mais c'est toutes les lignes qui deviennent non modifiables?

    Merci!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if :pee.pee_statu <> 'P' then
       set_item_property('pee.an_exerc',enabled, property_false);
       go_item('pee.pee_statu');
       set_item_property('pee.PEE_DATE_DEBUT_APPLI',enabled, property_false); 
       go_item('pee.pee_statu');
       set_item_property('pee.PEE_DATE_FIN_APPLI',enabled, property_false); 
       go_item('pee.pee_statu');
       set_item_property('pee.PEE_DATE_MESUR_EXCEP',enabled,property_false); 
       go_item('pee.pee_statu');
    end if;

  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
    Si aucun champs ne peut être modifié, autant utiliser Set_Block_Property(UPDATE_ALLOWED) dans le When-New-Record-Instance trigger.

  3. #3
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    r:=GET_BLOCK_PROPERTY('mon_bloc',CURRENT_RECORD);
    -- ou :SYSTEM.TRIGGER_RECORD
    SET_ITEM_INSTANCE_PR0PERTY('mon_bloc.mon_champ',r,UPDATE_ALLOWED,PROPERTY_FALSE);

  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
    T'es compliqué Garuda, un simple current_record est valable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET_ITEM_INSTANCE_PROPERTY('mon_bloc.mon_champ',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
    Mais bon, je préfère comme Sheik de passer le bloc en non updatable, c'est plus simple à coder.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 122
    Par défaut
    Je ne veux pas mettre non updatable sur tout le bloc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Exercice   Date début      Date fin      Statut
      2012     2012-01-01     2012-05-05      P
      2012     2012-06-06     2012-07-08      A
      2012     2012-08-08     2012-08-05      N
     
    Statut = :PEE.PEE_STATU
    Dans ce cas je veux juste que les champs de la ligne avec le statut à 'A' soit non modifiable sois (Exercice, Date début, Date fin et Statut) de cette ligne seulement.
    Les autres lignes avec le statut à 'P' et 'N' peuvent être modifiables.

    Bizarre...
    Dans Forms il ne reconnais pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET_ITEM_INSTANCE_PR0PERTY('PEE.PEE_STATU',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
    J'ai un message qu'il doit être déclaré?
    Je suis bien sous 10G.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BEGIN
    if :pee.pee_statu <> 'P' then
      SET_ITEM_INSTANCE_PR0PERTY('PEE.PEE_STATU',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
    end if;
    Je fait de même pour les autres colonnes de la ligne.
    Merci!

  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
    Ca marche bien, faut juste remplacer le 0 par un O dans Pr0perty.. merci garuda

    Sinon, le but de passer le block en mode update allowed YES/NO est que tu ne dois pas gérer tous les items.
    Donc fais plutôt un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    When-New-Record-Instance 
    IF :pee.pee_statu <> 'P' then
    SET_BLOCK_PROPERTY('PEE', UPDATE_ALLOWED,PROPERTY_FALSE);
    ELSE
    SET_BLOCK_PROPERTY('PEE', UPDATE_ALLOWED,PROPERTY_TRUE);
    end IF;

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

Discussions similaires

  1. Pb index multi-valeurs avec DBase
    Par Rickless dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/01/2006, 16h50
  2. Architecture multi couches avec librairie borland?
    Par seb_asm dans le forum JBuilder
    Réponses: 4
    Dernier message: 08/06/2005, 10h14
  3. Accés multi utilisateurs avec fstab
    Par Sun3clipse dans le forum Administration système
    Réponses: 2
    Dernier message: 26/08/2004, 15h49
  4. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  5. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01

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