je souhaite enregistrer la date et heure de création d’un enregistrement.
Pour cela j’utilise une formule d’initialisation (avec NOW()) car une formule standard actualiserait a priori la date à chaque modification de l’enregistrement.
Cela étant, s’agissant d’une formule d’initialisation, il semble possible pour tout utilisateur avec le rôle éditeur de modifier/surcharger la valeur initialisée.
Mon constat est-il valide ? Si oui, quelle est la solution la plus adaptée pour empecher cet écrasement de données par un utilisateur ?
Dois-je passer par un verrouillage de chaque colonne concernée via le menu des permissions avancées ? Est-il éventuellement possible d’utiliser une formule, plutôt qu’une formule d’initialisation, avec une condition vérifiant si une valeur n’a pas déjà été calculée comme ci-dessous sans créer une référence circulaire :
A ma connaissance la fonction NOW() ne fonctionne que dans une formule d’initialisation, pour éviter justement qu’elle soit calculée en permanence, ce qui deviendrait ingérable.
Et j’ai peur que si vous créez une permission avancée qui bloque la mise à jour de la colonne pour un certain type d’utilisateurs (typiquement les Editeurs), alors ça bloque le calcul de la formule d’initialisation si ces utilisateurs mettent à jour la ligne de données. Mais je vous encourage à faire le test pour en avoir le cœur net !
Il est aussi possible, si vous tenez à leur présenter cette information, de construire une colonne formule qui récupère la valeur dans votre colonne horodatage/paternité puis de masquer celle(s)-ci.
La colonne formule n’est pas modifiable par un éditeur (réglage recommandé)
Je viens de changer toutes mes colonnes de formules par des colonnes de données avec formule d’initialisation.
Avec permissions avancées qui interdit toute modif.
Ça fonctionne bien
Et j’ai justement décrit cela il y a peu ici : Protéger les colonnes de formules contre les modifications malencontreuses