Afficher qui a créé ou modifié un enregistrement
Objectif
Afficher qui a créé un enregistrement et quand, et qui l’a modifié en dernier et quand — sur un formulaire, dans une vue, ou les deux — et, plus généralement, faire pointer un champ de recherche vers la table Utilisateurs de la plateforme.
Ce que vous obtenez d’office
Chaque table gérée par la plateforme porte quatre champs système que vous n’avez pas à créer :
- Créé le et Modifié le — la date et l’heure de création et de dernière modification de l’enregistrement.
- Créé par et Modifié par — l’utilisateur qui l’a créé et celui qui l’a modifié en dernier, affichés par leur nom.
La plateforme renseigne ces quatre champs ; vous ne pouvez pas les modifier, et ils ne sont jamais vides une fois l’enregistrement sauvegardé. Ils apparaissent en bas de la liste des champs dans le concepteur de formulaires et le concepteur de vues, sous vos propres champs, prêts à être glissés sur un formulaire ou ajoutés comme colonne.
Étapes — les afficher dans une vue
- Ouvrez l’onglet Vues de la table et ouvrez (ou créez) une vue dans le concepteur de vues.
- Dans Champs disponibles, repérez Créé le, Créé par, Modifié le ou Modifié par — ils se trouvent après vos propres champs.
- Faites glisser ceux que vous voulez dans l’en-tête de la grille, dans l’ordre souhaité.
- Vous pouvez aussi sélectionner une colonne et définir un format de date pour Créé le / Modifié le.
- Sélectionnez Enregistrer.
La vue affiche désormais ces informations. Créé par et Modifié par affichent le nom de l’utilisateur, et non un identifiant interne.
Étapes — les afficher sur un formulaire
- Ouvrez l’onglet Formulaires de la table et ouvrez un formulaire dans le concepteur de formulaires.
- Faites glisser les champs système de la palette vers une section — une petite section « Audit » en bas du formulaire est l’emplacement habituel.
- Sélectionnez Enregistrer.
Sur le formulaire, ils s’affichent en lecture seule : c’est la plateforme qui les gère, il n’y a donc rien à saisir.
Créer un champ de recherche vers un utilisateur
Comme la plateforme conserve une table Utilisateurs dans chaque environnement, vous pouvez y faire pointer un champ Recherche ordinaire — pour un « Attribué à », un « Approuvé par » ou toute autre personne que vous renseignez vous-même sur un enregistrement (par opposition aux champs automatiques Créé par / Modifié par) :
- Dans les Champs de la table, ajoutez un champ de type de données Recherche.
- Pour Table associée, choisissez Utilisateurs.
- Enregistrez.
Le champ permet alors de choisir un utilisateur par son nom, comme n’importe quel autre champ de recherche.
Ce qui se passe en coulisses
La table Utilisateurs se remplit d’elle-même : chaque fois que quelqu’un crée ou modifie un enregistrement, la plateforme inscrit cette personne dans la table Utilisateurs de l’environnement à partir des informations déjà présentes dans sa connexion — Créé par affiche ainsi un nom sans aucune configuration, et la table grandit à mesure que les utilisateurs se servent de l’environnement. Une personne qui n’a encore touché aucun enregistrement dans cet environnement n’apparaît pas dans un champ de recherche Utilisateurs tant qu’elle ne l’a pas fait.
Les quatre champs système ne sont pas des colonnes stockées que vous gérez — ils sont fournis sur chaque table : ils n’occupent donc jamais de place dans votre solution et ne demandent aucune configuration.
Dépannage
- Créé par affiche un identifiant, et non un nom. — cet utilisateur n’est pas encore inscrit dans la table Utilisateurs de cet environnement (il a créé l’enregistrement dans un environnement plus ancien, ou l’enregistrement a été importé). Le nom apparaîtra la prochaine fois qu’il agira dans cet environnement.
- Je ne trouve pas les champs système dans la palette. — ils se trouvent à la fin de la liste Champs disponibles, après vos propres champs ; faites défiler vers le bas.
- Utilisateurs n’apparaît pas dans la liste Table associée. — l’environnement est antérieur à la table Utilisateurs. Réinitialiser les tables par défaut de l’environnement l’ajoute.