Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2007, 14h43   #1
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Par défaut [Forms10g] Comment rafraîchir les données affichées sur ma forme

Salut,


Dans des applications à temps réels comment faire pour rafraîchir les données
de ma forme mais sans utiliser le timer ?

Merci d'avance.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 15h36   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Sans timer, ça va être dur.
Tu veux raffraichir quand ?

Si c'est lorsque l'utilisateur navigue, tu peux utiliser le trigger when_new_item_instance
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 15h48   #3
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Je veux que mon ecran contient les données réels de ma table

TU veux dire utiliser get_item_property

Code :
1
2
 
get_item_property('bloc.nom_col',DATABASE_VALUE);
Je pense c'est mieux d'utiliser le when_new_record_instance.

Mais est ce que cette solution est performante?
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 15h54   #4
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Je suis HYPER concerné par ce genre de problématique.

L'alternative que j'ai mise en place consiste à invoquer la built-in POST dans le trigger WHEN-NEW-RECORD-INSTANCE (car il s'agit de bloc multi-lignes mais when-new-item-instance est peut être plus approprié dans ton cas).

A partir de là, tu n'as plus besoin de timer.
Tu peux par exemple enchaîner sur un clear_block(no_validate) suivi d'un execute_query.

Remarques :
- tu peux remplacer POST par COMMIT
- ton écran doit être organisé impeccablement en particulier concernant le status de tes records, en tout cas, c'est LE point qui m'a posé le plus de contraintes.
- l'invocation de post ou commit va déclenché les triggers de validation (donc when-validate-record, when-validate-item, etc.) -> Cf. le niveau de validation défini dans ton écran
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 15h59   #5
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Merci pour vos suggestions.

Mais le post il valide le données au niveau de la forme mais il ne rafraichit
pas mon ecran ( c'est a dire s'il y a des nouveaux enregistrements inserés dans ma table avec le post je vais pas les voir sur mon ecran ).
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 16h15   #6
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Citation:
Envoyé par salim11
s'il y a des nouveaux enregistrements inserés dans ma table avec le post je vais pas les voir sur mon ecran
Ah si !
POST effectue une validation des modifications (insertion, suppression, modifications de lignes) en base comme le ferait commit sauf que celle-ci peut être annulée via un appel à CLEAR_FORM (et uniquement clear_form par opposition à clear_block par exemple).

Par contre, tu as raison quand tu dis que l'appel à POST ne suffit pas.
C'est pour ça que je te proposais d'enchaîner un clear_BLOCK et EXECUTE_QUERY...
mais surtout pas d'appel à CLEAR_FORM

Dernière remarque : post est une procédure restreinte mais ça tu le sais certainement déjà.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 16h23   #7
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Code :
1
2
3
4
 
POST effectue une validation des modifications (insertion, suppression,
 modifications de lignes) en base comme le ferait commit sauf que celle-ci 
peut être annulée via un appel à CLEAR_FORM
Je comprends pas une chose , j'ai créé une forme et dans le when_new_record_instance je fais le post, quand je modifie un champs ou je crée un nouveau et apres je me positionne sur un autre record il commit au niveau de la forme mais je voix pas les modification au niveau de table ( la base de données)


Merci Magnus.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 17h06   #8
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Pour ce qui est du raffraîchissement commandé depuis un évènement extérieur, j'ai développé la solution suivante:
http://forms.pjc.bean.over-blog.com/...e-4168506.html

Un message peut ensuite être envoyé à Forms depuis la base, sur le déclanchement d'un trigger, par exemple.

Sinon, le déclenchement depuis Forms ne peut pas passer par autre chose qu'un timer. Mais franchement, un timer qui se déclenche une fois par seconde ou toutes les 2 secondes ne provoquera aucun encombrement réseau.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 17h18   #9
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Citation:
Envoyé par salim11
quand je modifie un champs ou je crée un nouveau et apres je me positionne sur un autre record il commit au niveau de la forme mais je voix pas les modification au niveau de table ( la base de données)
Normal, POST ne valide les modifications que pour la SESSION en cours.
Donc si vous faîtes une requête en parallèle sous SQLPlus par exemple alors vous ne verrez pas les modifications tant que vous n'aurez pas effectué de COMMIT dans l'écran.

Cependant, vous n'avez pas d'invoquer COMMIT dans l'écran pour vider votre bloc et le recharger de manière à travailler en temps réel : vous êtes toujours dans la même session que celle qui a posté les modifications.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 17h32   #10
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

C'est trés clair.

Merci magnus.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h22.


 
 
 
 
Partenaires

Hébergement Web