Bonjour :D
Sous mon appli forms 6i je fais unqui ouvre donc la Forms demandée 8OCode:Open_Form
Est-il possible que la fenêtre parent puisse détecter la fermeture de la fenêtre fille, et si oui comment :?:
Merci de votre aide :idea:
Version imprimable
Bonjour :D
Sous mon appli forms 6i je fais unqui ouvre donc la Forms demandée 8OCode:Open_Form
Est-il possible que la fenêtre parent puisse détecter la fermeture de la fenêtre fille, et si oui comment :?:
Merci de votre aide :idea:
si le focus revient dans le bloc de la fenêtre parente ça suffit pas ?
De plus, sauf erreur de ma part, le code est repris dans la fenêtre parente à l'endroit où il s'était arrêter, c'est à dire à l'ouverture de la fenêtre fille (juste après le open_form). Tu peux donc mettre un flag à cet endroit si la solution d'orafrance ne te convient pas.
Orafrance : Non car l'utilisateur peut revenir dans la fenêtre parent pour ouvrir une seconde fenêtre fille :roll:
Résumé
J'ai donc mon écran parent qui propose une liste d'enregistrements parents. A partir de là un utilisateur peut ouvrir un écran enfant par enregistrement parent (à 1 parent correspond 1 et 1 seul enfant) 8O
Mais il ne faut pas que 2 utilisateurs connectés sur le même écran parent (par 2 instances différentes de l'application) puisse ouvrir le même écran enfant. J'ai donc fait undans l'écran parent lorsqu'un utilisateur se place sur un enregistrement enfant ce qui empêche le deuxième de s'y placer. Le problème est qu'il faut que l'utilisateur qui s'est positionné sur l'enregistrement enfant libère cet enregistrement lorsqu'il ferme la fenêtre enfant, alors qu'actuellement la levée du verrou sur l'enfant ne se fait que l'utilisateur ferme la fenêtre parent.Code:select for update nowait;
Seconde problème : je ne peux modifier que la fenêtre parent (par ex je ne peux lever le verrou sur l'enfant lorsque je ferme la fenêtre enfant, d'où le pourquoi je dois le détecter depuis la fenêtre parent) :roll:
Si vous n'avez rien compris cela ne m'étonnera pas :lol:
Oups apparemment j'ai assomé l'auditoire :lol:
c'est pas une proprièté du bloc qui permet de gérer les locks ? Fait une recherche sur le forum, il en a été question la semaine dernière ;)
En effet la proriété est celle-ci :
Trouvez ici. 8OCitation:
Mode de verrouillage spécifie à quel moment Forms tente de verrouiller l'enregistrement lors d'une modification dans l'interface.
Automatique ou Immédiat force le verrouillage dès que l'enregistrement est modifié dans la forme
Différé n'obtient le verrouillage de l'enregistrement que lors de la phase de Commit.
Cette propriété peut être fixée à l'exécution (Set_Block_Property(..., LOCKING_MODE)).
Mais cela ne me va par en fait cette propriété bloque l'enregistrement toto si je modifie toto, or moi je veux bloquer l'enregistrement parent si quelqu'un modifie l'enregistrement enfant :roll:
Si tu mets la ligne du bloc parent au status CHANGED au moment d'ouvrir l'enfant ça suffit pas avec le LOCKING_MODE sur le parent ?
Le problème reste le même car je ne peux détecter la fermeture de la forms qui modifie l'enfant, et donc je ne peux repasser le status du block parent à sa valeur initiale :cry:Citation:
Si tu mets la ligne du bloc parent au status CHANGED au moment d'ouvrir l'enfant ça suffit pas avec le LOCKING_MODE sur le parent ?
Sinon pour information : un OPEN_FORM ouvre donc une autre forms désignée et le code s'arrête là. Mais lorsque la forms appelée est fermée le code sous OPEN_FORM n'est tout de même pas exécuté dans la forms appelante, ce qui me pose problème :x
Je ne suis pas certain d'avoir cerné la problématique.
du peu que j'en ai compris, mon écran parent serait basé sur une table contenant une colonne permettant de définir si la ligne est lockée ( RESERVE VARCHAR2(1) CHECK ('O', 'N'))
l'utilisateur ne peut ouvrir l'écran enfant que lorsque cette colonne est à 'N'. Dans ce cas, la colone est passée à 'O' et l'écran est appelé (OPEN_FORM) avec en paramètre la PK ou le rowid de cette colonne.
Lorsque l'utilisateur ferme l'écran enfant, le trigger POST-FORM remet cette colonne à 'N'.
Oui, tu as raison avec le OPEN_FORM le code situé à la suite n'est pas exécuté. N'as-tu pas moyen d'appeler ton autre form via CALL_FORM ?
Car avec CALL_FORM le code situé ensuite est exécuté au retour.
Donc la solution que je vais essayer de mettre en place est :
mettre un trigger dans la fenêtre parentavec dedans vérification par unCode:when-window-activated
de si la fenêtre enfant est ouverte et donc ne libérer l'enregistrement parent que si la fenêtre enfant est fermée 8OCode:IS-OPEN (faut que je trouve le nom exact)
Je pense qu'il serait beaucoup plus simple de ne pas ouvrir la forme enfant si l'enregistrement est verrouillé.
Apparemmentpermet de déterminer si une commande Pipe est ouvert, mais on ne peut savoir par cette comande si un écran forms est ouvert ou pas :roll:Code:IS_OPEN
Connaissez vous une commande qui permet de savoir si l'écran Forms toto est ouvert :?:
Merci 8O
Code:Find_Form()