Action standard : valider (accept)

Sur une vieille base les formulaires s’affichent ainsi :

<code 4D>
$RefFen:=Open window($Gauche+(<>DHOF*$Multi);$Haut+(<>DVOF*$Multi);-1;-1;Plain window;"";“FERMETURE_FENETRE”)
MODIFY RECORD(p_PtrTable->;*)

</code 4D>

C’est un bouton avec l’action standard “valider” qui sauvegarde l’enregistrement dans la table

Une telle fenêtre ne prend pas en compte l’objet Form.

J’ai entrepris de remplacer tout cela par :
<code 4D>
$L_W:=Open form window(p_PtrTable->;$3;Plain form window;Horizontally centered;Vertically centered;*)
DIALOG(p_PtrTable->;$3)

</code 4D>

Là je constate que le bouton avec l’action standard “valider” est inopérant : l’enregistrement n’est pas sauvegardé, le trigger ne se déclenche pas et l’événement sur validation… rien.

D’après la doc ce bouton doit déclencher le trigger et le sur validation.

Est-ce moi qui a manqué un épisode ?

Est-ce moi qui a manqué un épisode ?
Oui (répondit-il avec aigreur - le confinement le rendait nerveux)
VALIDER est un fourre-tout, ils ne sont pas près de documenter tout ce que ça fait. Pour ce que j’en sais :

  • MODIFIER ENREGISTREMENT, ça stocke l’enregistrement, ça ferme la fenêtre, OK vaut 1
  • DIALOGUE, ça ferme la fenêtre, OK vaut 1 et l’enregistrement il s’en fout c’est ton problème à toi de faire le SAVE RECORD (sans oublier le lâche moi le record après mais je sais plus si c’est free, let go, release, liberate ou autre chose)
: Arnaud DE MONTARD

DIALOGUE, ça ferme la fenêtre, OK vaut 1 et l’enregistrement il s’en
fout c’est ton problème à toi de faire le SAVE RECORD

Pourtant:

accept ak accept
Sauvegarde un enregistrement nouveau ou modifié et donc déclenche le
trigger Sur sauvegarde nouvel enreg ou Sur sauvegarde enregistrement.
L’action valide également un formulaire affiché par DIALOGUE. Dans
tous les cas, l’événement formulaire Sur validation est généré.

https://doc.4d.com/4Dv18/4D/18/Actions-standard.300-4575620.fr.htmlhttps://doc.4d.com/4Dv18/4D/18/Actions-standard.300-4575620.fr.html>

Ha oui, mais ça, c’est un hadîth, c’est plus ou moins fiable. Les exégètes se réfèrent https://doc.4d.com/4Dv18/4D/18/DIALOGUE.301-4505570.fr.htmlau verset original> dit “du dialogue” :
« A noter que la validation n’entraîne pas la sauvegarde : si le dialogue comporte des champs, vous devez appeler explicitement la commande STOCKER ENREGISTREMENT pour stocker les données éventuellement modifiées. »