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 10g] invocation de POST pour effectuer des calculs en temps réel


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut [forms 10g] invocation de POST pour effectuer des calculs en temps réel
    Hello,

    Sous forms 10g, je développe actuellement des écrans où je fais des calculs en temps réel.
    Pour être en temps réel, j'invoque systématiquement la built-in POST dans le trigger niveau bloc WNRI.

    Une (pernicieuse) conséquence est qu'après un appel à POST, je ne suis plus capable d'identifier les records qui ont été modifiés par l'utilisateur.
    En effet, les variables systèmes telles que :SYSTEM.RECORD_STATUS sont passés de INSERT ou CHANGED à QUERY.

    Existe-t-il une alternative ou un moyen permettant de connaître les records modifiés mais non validés par COMMIT ?

  2. #2
    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
    Salut,

    Je propose de créer dans ton block une case à cocher,
    et avant ton post tu créer un timer , et dans le when-timer-expired
    tu coches les enregistremets qui ont le statut <>'QUERY'.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Bonjour salim11 et merci de votre réponse.

    Votre solution me plaît bien mais ce bloc est associé à une table et dans mes écrans, j'ai des traitements complexes qui requierent des appels à CLEAR_FORM.
    L'invocation de cette dernière m'oblige donc à modifier la structure de ma table pour stocker la valeur de la case à cocher (ce que je préfère éviter) ou alors à utiliser une autre solution.

    Voyez-vous un moyen de compléter simplement votre procédé avec ces informations ?
    Si vous avez une autre idée, je suis aussi preneur

  4. #4
    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
    Salut Magnus,

    Pourquoi as-tu besoin de savoir quels sont les enregistrements modifiés ?

    Je ne pense pas qu'il y ait de mécanique native dans forms pour mémoriser quels sont les enregistrements modifiés.

    Une autre solution est de stocker par exemple dans une table temporaire les enregistrements modifiés/insérés lors de chaque post (en stockant clé primaire/unique).
    => lorsque tu committeras ils seront automatiquement effacés de ta table temporaire.

  5. #5
    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
    L'invocation de cette dernière m'oblige donc à modifier la structure de ma
    table pour stocker la valeur de la case à cocher (ce que je préfère éviter) ou
    alors à utiliser une autre solution.
    j'ai oublié de te dire que la case à est non basé
    donc dons le when-trigger_expired
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    begin 
    go_block('****');
    first_record ;
    loop 
    exit when :system.last_record='TRUE';
    IF :SYSTEM.RECORD_STATUS<>'QUERY'
    Cocher la case à cocher ;
    end ;
    end loop;
    end ;

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Bien sûr, je l'avais compris comme cela que la case à cocher devait correspondre à un item non basé.
    Le problème ne se pose pas lors du when-timer-expired mais bien lorsque je fais appel à CLEAR_FORM ou à CLEAR_BLOCK.
    Ah mais que je suis bête, après ces 2 instructions, quel que soit le record, la case doit être décochée jusqu'à ce que l'utilisateur effectue au moins une modification et que le timer se déclenche à nouveau.

    Hum... je vais approfondir ma réflexion parce qu'effectivement ces 2 built-in ne génèrent aucun souci.

    Je vous tiens au courant.
    Merci

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

Discussions similaires

  1. Repérer le titre d'une colonne pour effectuer des calculs
    Par Doriansticle dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/02/2013, 15h14
  2. Réponses: 7
    Dernier message: 30/05/2012, 14h36
  3. [Système] Problème pour effectuer des calculs
    Par tissard dans le forum Langage
    Réponses: 10
    Dernier message: 09/12/2005, 14h07

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