2010-06-14 5 views
0

J'essaie d'utiliser l'état system.form_status, mais lorsque je le vérifie après avoir modifié certains textes ou mon élément de liste, il n'y a aucun changement dans system.form_status, je reçois juste le message "query" mais je dois recevoir le message "modifié".Utilisation de system.form_status

Alors, comment puis-je résoudre mon problème? A-t-il une condition préalable? Le statut DEVRAIT être MODIFIÉ lorsque vous modifiez un élément de table de base (dans un bloc de table de base).

Répondre

2

Si vous modifiez un élément et que le statut ne change pas, il doit s'agir d'un élément de contrôle.

+0

oui j'utilise l'élément de contrôle, pour les contrôler que dois-je faire? Plz m'aider. – Amir

+0

@rima: Dans ce cas, n'utilisez pas ': system.form_status'. Vous pouvez vérifier si les valeurs ont été modifiées (sont-elles différentes de la valeur par défaut?) –

+0

aha, je l'ai eu.Merci mec – Amir

1

Si un élément de contrôle est modifié, le statut du formulaire du bloc & restera inchangé. Une solution consiste à ajouter un déclencheur (WHEN-VALIDATE-ITEM) à l'élément pour forcer le changement du statut de l'enregistrement. Dans le déclencheur, définissez le statut de l'enregistrement sur "CHANGED". Vous devrez peut-être une certaine logique pour prendre soin des nouveaux dossiers ainsi, par exemple:

IF GET_RECORD_PROPERTY(NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
         NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
         STATUS) = 'QUERY' THEN 
    Set_Record_Property (NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
         NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
         STATUS, 
         CHANGED_STATUS); 
ELSIF GET_RECORD_PROPERTY(NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
          NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
          STATUS) = 'NEW' THEN 
    Set_Record_Property (NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
         NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
         STATUS, 
         INSERT_STATUS); 
END IF; 

Sinon (et cela est probablement une meilleure méthode), dans votre déclencheur QUAND revalider-ITEM, définissez la valeur d'un élément de base de données dans le même enregistrement à une certaine valeur (selon l'autre réponse ici). Cela réglera automatiquement l'état de l'enregistrement correctement.

+0

cette solution n'a pas fonctionné! Expliqueriez-vous plus à moi plz? Peut-être que je fais dans le mauvais sens. .. – Amir

+0

ok, je n'ai pas un environnement Forms je peux le tester en ce moment. Je l'ai écrit sur le dessus de ma tête, donc je ne sais pas si ça va marcher ou pas. Si vous voulez essayer, pouvez-vous faire un dépannage? 1. Y a-t-il une erreur lorsque le déclencheur se déclenche? 2. Le déclencheur est-il réellement en train de tirer? 3. quel est le statut de l'enregistrement avant et après que le déclencheur exécute le code (c'est-à-dire que fait GET_RECORD_PROPERTY (NAME_IN ('SYSTEM.TRIGGER_RECORD'), NAME_IN ('SYSTEM.TRIGGER_BLOCK'), STATUS) 'return)? –