Bonjours à tous
Sur Grist, j’ai :
Une première table « Client » qui référence tous les clients dans une colonne « Nom ».
Une seconde table « Boutique » qui référence toutes les boutiques de tous les clients. J’ai donc une colonne « Client » qui est une liste de choix unique basée sur la table « Client », et une colonne « Désignation » qui permet d’identifier la boutique, puis diverses colonnes : Adresse, Observation, etc.
Une troisième table qui permet de détailler avec plus de précision la configuration de chaque boutique : type de borne, quantité, setup, etc.
Mon problème est que sur cette troisième table, je souhaite que le nom des boutiques (Désignation) soit uniquement celui d’un client précis.
Je n’arrive pas à construire la formule « Condition de la liste déroulante ».
Pouvez-vous m’aider ?
Bonjour si vous avez :
- dans la table boutique, une colonne
client réf vers table client
- dans la table configuration, une colonne
Cliiient réf vers table client et une colonne désignation réf vers boutique, la condition sur liste déroulante suivante sur la colonne désignation
choice.client == $Cliiient
devrait fonctionner
Merci pour ton aide. Du coup je suis obligé de renseigner dans une autre colonne le client, alors que la table en question et dédiée justement a ce client ?
je partage une feuille grist
en l’occurence dans la table “ détail boutique Client 1” j’essai d’avoir uniquement d’avoir les boutiques du client 1 qui sont dans la table Boutique.
merci de votre aide
Dans une bdd il vaut mieux plutôt que d’avoir X tables pour X clients, qui contiendront chacune très peu de lignes, avoir 1 seule table “détail boutique” qui contient tous les clients, donc ça ressemblerait à
DETAIL BOUTIQUE
Client – Boutique – Détail 1 – Détail 2
Client 1 Boutique 1 ..
Client 1 Boutique 2..
Client 2 Boutique 1..
Client 3 Boutique 1..
Client 3 Boutique 3..
Et si besoin de voir un client à la fois, créer des vues filtrées ou des vues dynamiques
Merci @audezu Mon problème est que, selon les clients, je peux avoir des typologies de boutiques extrêmement différentes, et donc des bases de données qui le sont tout autant. Au final, je ne comprends pas pourquoi cela bloque.
En effet, même s’il y a différentes typologiques de boutiques, il semble préférable de n’avoir qu’une seule et unique table avec les boutiques. Multiplier les tables stockant un même type d’information (ici des détails sur des boutiques) est une mauvaise pratique, c’est un coup à vite s’y perdre.
Ça veut sûrement dire avoir un grand nombre de colonnes, dont beaucoup qui ne sont pas remplies sur chaque ligne, mais ça se gère très facilement avec les vues.
Sinon, pour répondre à votre demande initiale, le mieux semble de lier les vues :
- vue boutique à lier au client => vous cliquez sur un client ça n’affiche que les boutiques le concernant
- vu détail boutique : il faut avoir aussi dans cette table une colonne référence vers la table clients pour que les lignes affichées ne correspondent qu’à ce client (là aussi en liant la vue à celle des clients)
Mais l’intérêt se fait en ayant une seule table avec tous les détails de toutes les boutiques (sinon ça veut dire une page par client, et aucune donnée filtrée dynamiquement).
Merci à vous, cela n’arrange pas mes affaires. Concrètement Grist ne sait pas faire cela ?
Je rejoins le message d’Antoine mais si vous souhaitez garder 1 table source / client, vous pouvez créer une colonne technique réf vers client, et vous la masquez ensuite dans les vues.
ah ou alors vous écrivez en dur dans la condition :
choice.client == "Client1"
Mais si dans la table boutiques, client est une réf cela ne fonctionnera pas donc il vous faudra ajouter une colonne technique “client txt brut” avec formule $client.nom dans la table boutiques, et faire
choice.client_txt_brut == "Client1"
Finalement j’ai fait une colonne dans ma table « boutique » qui reprend le nom du client sous forme de formule ($Client.Nom) en texte, et cela fonctionne : je peux appliquer un filtre sur la liste de choix. La colonne peut être masquée.
Grist filtre - Grist