bonjour,
voilà cela fait un petit bout de temps que je bloque sur un problème de méthode dans forms, je précise que je suis en Forms Version 10.1.2, Oracle 10g. je vous expose le pb:
J'ai un bloc détail basé sur une table VISITE, dans ce bloc, apparait un lieu de visite une date de début et de fin de visite.
Pour illustrer, on pourrait avoir dans le bloc:
- Paris - 01/09/2000 - 10/09/2000
- Strasbourg - 11/09/2000 - 15/11/2000
- Marseille - 16/11/2000 - 30/11/2000
- Paris - 01/12/2000 - 31/12/2000
Voici la règle:
- Pour une visite, la date de fin ne doit pas être inférieure ou égale à date de début
- Une visite ne doit pas se chevaucher avec une autre visite (test sur les dates de début et de fin)
Si dans l'exemple je veux rajouter 'Dijon - 11/09/2000 - 12/09/2000' il faudrait afficher un message comme quoi cette période a déjà une visite sur Strasbourg .
Dans ma programmation:
trigger WHEN-VALIDATE-RECORD avec
- Date de début non null
- test date de début < date de fin
trigger KEY-COMMIT
j'ai une boucle qui reprend toutes les lignes du bloc et qui va vérifier si il existe un chevauchement avec les valeurs que je veux rajouter.
Si il y a un chevauchement ou si on a fait toutes les lignes, on sort de la boucle
Le problème, c'est que si je mets une valeur fausse dans la date de fin (inférieur à la date de début par ex.), le WHEN-VALIDATE-RECORD s'éxécute plusieurs fois et donc le message d'erreur apparait plusieurs fois !
J'ai voulu mettre tous les tests dans le KEY-COMMIT, mais là il semble que les instructions FIRST-RECORD, NEXT-RECORD.. soient interdites (non- oracle exception)
Comment résoudre ce problème ? et surtout quelle méthode utiliser ?
Merci d'avance pour vos lumières.
Partager