Je vois qu’il y a plusieurs demandes portant sur le moyen de modifier les données dans une table existante , ceci à l’aide d’un formulaire Grist.
Je vous propose le petit truc suivant , qui permet de répondre à ce besoin. (Si cela a déjà été posté , je m’excuse par avance).
Si par exemple, vous voulez alimenter par un formulaire une table inventaire avec pour chaque ligne :
Un Identifiant, Un libellé, Un prix et Une pièce jointe. Le libellé , le prix et la PJ sont considérés comme modifiables.
Vous pouvez proposer ensuite un formulaire qui permet, en choisissant la ligne de l’identifiant à modifier, de rentrer des nouvelles valeurs de libellé et/ou de prix , voire une nouvelle pièce jointe.
Pour cela , en plus de la table inventaire, j’ai créé une table modification, avec une colonne Identifiant qui est une colonne qui référence l’identifiant de la table inventaire.
Un formulaire permet , en choisissant l’Identifiant dans le champ dédié , de proposer une nouvelle valeur pour un ou plusieurs des champs proposés.
J’utilise les formules d’initialisation dans cette table pour avoir les date/heure de modification de chaque valeur.
En cas de modification, on aura donc dans la table modification, une ligne pour chaque modification d’un identifiant, portant sur un ou plusieurs champs modifiables , avec la valeur de l’identifiant , la ou les nouvelles valeurs des champs (ou la nouvelle PJ) et les dates et heures précises , champ modifié par champs modifié.
Mon idée , est d’utiliser dans la table inventaire un lookupOne pour chacun des champs « modifiables » .
Par exemple, il y a une colonne ModifPrix dans la table inventaire qui reprend la formule Modifications.lookupOne(Identifiant=$Identifiant, sort_by=‹ -DMP ›).Prix
DMP étant le résultat de la formule d’initialisation pour le champs Prix dans la table modifications , c’est a dire la date/heure de modification, et Identifiant étant l’identifiant choisi dans le formulaire de modification.
Ainsi , soit il n’y a pas eu de modification de ce champ , et ModfPrix est vide , soit il y en a eu , une ou plusieurs , et c’est la plus récente qui est remontée dans ModifPrix.
Il suffit alors d’avoir dans la table inventaire , la colonne Prix qui est ModifPrix si ModifPrix existe , PrixInitial ( le prix entré via le formulaire de création) si ModifPrix est vide.
On fait pareil pour tous les champs modifiables.
Chez moi, ça fonctionne, je peux modifier par un formulaire Grist des lignes existantes dans une table Grist.