Jump to content
  • 0

Remplir un modèle de (toutes les) rubriques


Laulow
 Share

Question

Bonjour à tous,

Je crois qu'il existe une astuce pour créer un modèle rempli de toutes les rubriques d'une Table, mais je ne vois plus comment faire. J'ai supprimé l'unique créée (vide), puis l'ai recréé mais ça reste vide...

Une idée ?

Merci.

Link to comment
Share on other sites

Recommended Posts

  • 0

Bonjour,

Ah oui, en effet, simplissime !!! Merci du tuyau.

 

Et quand on veut importer des données, et qu'à cause d'une clé primaire n'existant pas en "source" (et qui va être auto-générée avec la "roue rouge") on se retrouve avec un décalage de 1 ligne (et des rubriques discordantes), le principe est de laisser la cible telle quelle, et c'est à gauche que l'on modifie le nom de la rubrique en développant le pop-up (pour que ça corresponde exactement à la rubrique de la cible) quand on importe ?

Link to comment
Share on other sites

  • 0
Il y a 2 heures, Laulow a dit :

en développant le pop-up

Je ne suis pas sûr de comprendre ça… Agrandir la fenêtre de réglage de l'import ?

Si on a la main sur la source, la technique des noms concordants et pratique et sûre…

Link to comment
Share on other sites

  • 0

Bonjour,

Non, en fait je parlais des rubriques cibles où là il y a une liste déroulante pour faire sa sélection (par rapport à la source).

Quand on a une base avec des tables sans clé primaire (car reconstituées à partir d'un tableur, FM PRO la crée lors de l'importation. Et si on veut lier des tables, on doit remplir "manuellement" la rubrique "clé secondaire" de la table concernée ? Faut-il alors au préalable créé cette rubrique "clé secondaire" dans la table liée ? Ou bien FMP le fait tout seul ?

Il n'y a pas une méthode plus simple ou intuitive pour importer des données ?

Sinon, je me demandais si on ne peut pas imaginer créer soi-même les clés. En effet, si une clé comporte 20 chiffres et lettres, on peut envisager d'enlever par exemple 4 éléments de fin pour le remplacer par 0001, 0002, 0003, etc (à la fin). Il y a selon moi, statistiquement, aucune probabilité de se retrouver avec un doublon une seule fois (si on est sur 7 à 8.000 clés, et pas 78 milliards, évidement). Ainsi, on peut remplir les cases depuis le tableur en ensuite importer le tout en une fois. Il faut évidemment bien penser la chose en amont. Pensez-vous que c'est une alternative crédible ?

 

Link to comment
Share on other sites

  • 0

Bonjour,

J'ai du mal à saisir. Pourriez-vous décrire la situation avec les vrais noms des tables ?

Par exemple : «j'importe des REFERENCES depuis un tableau Excel, cela va dans une table REFERENCE dans FileMaker et chaque référence doit ensuite être reliée à un fournisseur (déjà présent dans la base et qui possède son identifiant)»

Une description de ce genre m'aiderait à comprendre l'objectif et donc la nécessité éventuelle de créer des rubriques identifiant à un endroit ou un autre…

Link to comment
Share on other sites

  • 0

Oui, il s'agit de :

1 Table de sociétés

1 Table de sites (1 société peut avoir 1 à plusieurs sites)

1 Table de salariés (1 salarié est rattaché à un seul site de travail et par ricochet à la société qui a ce site, et il y a évidemment 1 à plusieurs salariés par site)

1 Table de devis (1 devis est rattaché à 1 salarié, voire plusieurs devis pour lui, et donc parallèlement ces devis sont en quelque sorte liés au site et à la société in fine)

Personne n'a à l'origine de clé primaire, mais FMP peut les générer.

En fait, c'est un raisonnement à l'envers : c'est une mono Table Devis, qui est un fourre-tout recueillant toutes les infos, et je souhaite la saucissonner en base relationnelle. J'ai donc déjà tout éclaté en de nombreuses rubriques avec un tableur, et je souhaite réimporter cela dans FMP. D'où mon idée de créer plusieurs clés secondaires dans le tableur et les garnir comme déjà explicité (simple idée). 

Link to comment
Share on other sites

  • 0

Bonjour

Si vous partez d'une mono table , c'est peu être plus simple de partir de celle-ci dans FM . Vu tout les outils et script que possède FM pour manipuler les données ( comme la fonction "remplacer" par exp. )

Ont donne a FM votre mono table qui est traduit automatiquement( drague en drop sur fm ).

Ont peu dupliqué la table et ses données en autan de fois qu'ont a besoin de futur table ( sociétés, sites,salariés, devis et ligne de devis si les devus ont plus d'un articles )

Ont supprime toute les rubrique qui ont rien a avoir avec la nouvelle table ( exp; copie 1 = table sociétés = que les rubrique qui concerne les sociétés ... )

Ont attribue un num unique ( clef primaire ) a la table sociétés.

Ont fait de même pour les autre copie de table , mais ont garde un élément qui peu être remplacer par une cléf secondaire . Exp. pour les sites ;ont garde le non de société . Que ont vas changer plus tard avec l'id (cléf primaire) de la table sociétés ( par script pour pas se casser la tête :) )

Ont peu après créé la clef primaire de cette tables.

ext

 

Link to comment
Share on other sites

  • 0

Bonjour,

Merci pour cette approche intéressante que je n'avais pas envisagée. C'est vrai que cela semble plus simple présenté ainsi.

Sinon, vous-même connaissez un peu Excel ou un autre tableur du même genre ?

 

Concernant les doublons qu'il peut y avoir pour chaque catégorie de table, si l'on prend l'exemple de Sociétés, il faut juste repérer les enregistrements où un même nom de société apparaît, et les supprimer tous sauf (évidemment) 1 ? C'est ça ?

Pour le changement ultérieur avec l'ID, quel script écririez-vous pour ce changement de clé ("pour ne pas se casser la tête" comme vous dites) ? 

Et comment utilisez-vous la fonction "Remplacer" dont vous avez parlé ? C'est dans un script ou bien vous parlez simplement de celle que l'on trouve dans les Menus "Rechercher/Remplacer" (que je connais bien) ?

Merci.

Link to comment
Share on other sites

  • 0
il y a une heure, Laulow a dit :

Sinon, vous-même connaissez un peu Excel ou un autre tableur du même genre ?

Je me débrouille un peu en excel mais souvent je passe par fm , pour justement manipuler les donner. ( séparer CP de la commune , normalisée les num de tel , ect  ... )

J'avais mis cette exemple sur un post, pour expliqué les différence entre des table que ont peu avoir en excel ( au dsessu ) et celle d'une BDD comme FM ( en bas ).

000te.png.a737b3426fc85c20341b759944e91dcd.png

C'est un peu comme celle ci votre mono table ?

 

Il y a 1 heure, Laulow a dit :

Concernant les doublons qu'il peut y avoir pour chaque catégorie de table, si l'on prend l'exemple de Sociétés, il faut juste repérer les enregistrements où un même nom de société apparaît, et les supprimer tous sauf (évidemment) 1 ? C'est ça ?

Ca dépend beaucoup de comment est votre table !!! . il y a des technique différente . La plus simple est un script, qui vas faire un tris par ordre croissent sur le nom. Puis avec une "boucle script" ont compare le 1er nom avec le 2em , Si = ont supprime le 2em . Fin de si , ont masque le 1er ( ignoré enregistrement ) et ont recommance la boucle jusque quand il y a plus d'enregistrement ( non masqué )

 

Il y a 1 heure, Laulow a dit :

Pour le changement ultérieur avec l'ID, quel script écririez-vous pour ce changement de clé ("pour ne pas se casser la tête" comme vous dites) ? 

Bin ! justement avec la fonction remplacer :) ... Ont mémorise ( met en variable )  le nom de société et son "ID unique"( clef primaire ) ont passe sur la table " Sites " , Onr recherche le nom , Puis ont remplace le nom de sociètè par l'id pour faire la clé étrangère ,et donc le le lien .

Donc , oui, la fonction remplacer est egalement disponible dans les commande script .

Link to comment
Share on other sites

  • 0

Bonsoir 

Concernant les doublons, il y a toujours un travail manuel fastidieux à un moment ou un autre, mais le faire avec FileMaker simplifie grandement la vie.

Quelques pistes :

  • faire un lien entre deux occurrences de la même table sur une rubrique pertinente (le nom de la société) en ajoutant un lien « différent de » entre les deux rubriques de clef primaires =>on peut afficher dans une table externe toutes les sociétés ayant le même nom et traiter ainsi les différents éléments (notamment rattachement des enregistrements liés à l’enregistrement de la table Société qui est conservé).
  • faire une rechercher dans la rubrique du nom de la société avec l’opérateur « ! » puis trier par ordre alphabétique => les enregistrements doublon vont se suivre et il s’agira là encore d’opérer la fusion entre les différents enregistrements

Pour le Remplacer, je pense que @Apophis000 fait référence au menu Enregistrements/Remplacer... Attention, cette fonction est très puissante mais aussi extrêmement dangereuse. À utiliser les deux yeux bien ouverts !!!

Link to comment
Share on other sites

  • 0
il y a 6 minutes, MagalieJ a dit :

Pour le Remplacer, je pense que @Apophis000 fait référence au menu Enregistrements/Remplacer... Attention, cette fonction est très puissante mais aussi extrêmement dangereuse. À utiliser les deux yeux bien ouverts !!!

Tres juste...  L'avantage est que cette commande agit que sur les enregistrement trouvé . 

Link to comment
Share on other sites

  • 0
Il y a 13 heures, Laulow a dit :

Concernant les doublons

La méthode décrite par @Apophis000 est bonne, pour passer d'un Excel simple à un système multi-tables.

J'ai 3 observations :

  1. si on a déjà commencé à travaillé sur un fichier FileMaker et qu'on ne veut pas tout reprendre du début, on peut appliquer la même méthode non pas en glissant l'Excel vers FileMaker, mais en utilisant une table d'importation, en général nommé Import, dans la quelle on viendra importer tout le fichier Excel et à partir de laquelle on pourra alimenter toutes les tables réelles,
    NB : cette méthode a un avantage : elle peut resservir, le jour où l'on veut à nouveau importer un tableau Excel OU bien si on s'aperçoit que le Excel n'était finalement pas assez propre et qu'on veut le purifier avant de le réimporter (situation somme toute courante),
  2. pour la détection des doublons, il est possible de se baser sur plusieurs rubriques : si je concatène RaisonSociale & CodePostal, ça me permet de détecter les vrais doublons, en général,
  3. enfin et surtout, j'ai l'impression que cela n'a pas été dit : la grande astuce de ce genre de situations est de créer les enregistrements via les liens.

Exemple :

  • le script est dans la table Import, à la ligne 1, il a sous la main 4 ou 5 rubriques qui concernent la Société,
  • depuis la table Import, on a un lien vers la table Societe_creation_depuis_import, avec les égalités suivantes :
    • Import::RaisonSociale = Societe_creation_depuis_import::RaisonSociale,
    • et Import::CP = Societe_creation_depuis_import::CP,
    • et bien sûr avec la propriété de création via le lien,
  • le script fait alors des Définir rubrique :
    • Définir rubrique [ Societe_creation_depuis_import::Adresse1 ; Import::Adresse1Société ],
    • Définir rubrique [ Societe_creation_depuis_import::TelStandard ; Import::TelStandardSociété ],
  • cela vient créer l'enregistrement dans la table Societe,
  • le script valide l'enregistrement,
  • et là miracle : il se retrouve avec un enregistrement Societe qui possède son propre identifiant,
  • et ensuite, quand, à partir de la même ligne, il créera (de la même façon) un enregistrement dans Site, il pourra tout de suite lui attribuer l'identifiant de la société :
    • Définir rubrique [ Site_creation_depuis_import::ID_societe ; Societe_creation_depuis_import::ID ].

Ainsi, sans se déplacer, depuis la table import, on peut créer toutes les sociétés, sans doublons, puisque le lien de création se base sur la raison sociale et le code postal, puis créer tous les sites, puis tous les commerciaux, puis tous les devis, et attribuer à chacun les identifiants externes pour le lier avec ses parents.

NB : il est sous-entendu que les rubriques ID de chaque table possèdent une formule d'entrée automatique et que les ID_parent sont des rubriques simples.

Est-ce que cela t'aide ?

Bon début de journée,

Jérémie

Link to comment
Share on other sites

  • 0

Bonjour Apophis,

Merci pour les précisions apportées.

Il y a 20 heures, Apophis000 a dit :

C'est un peu comme celle ci votre mono table ?

 

En fait, non. Là, c'est une présentation "aérée" des données (sous EXCEL), tandis que moi, c'est brut : 1 ligne a directement une enfilade de colonnes toutes renseignées = rubriques les unes après les autres, remplies de données. Et il y a assez peu de chiffres, c'est surtout du texte (suivi de dossier en cours).

En schématisant, il y a 1000 lignes correspondant à 1000 dossiers, et pas Sociétés (où là il n'y en a que 300). Cela signifie qu'il y a environ 3 ou 4 fiches montrant 3 ou 4 fois la même société.

Je vais analyser les diverses suggestions et approches, et vais voir laquelle peut être mise en oeuvre avec mon peu de connaissance.

Merci bien.

 

Link to comment
Share on other sites

  • 0

Bonjour Magalie,

Comme je le disais à Apophis, je vais essayer de voir les axes que vous m'avez proposés les uns et les autres, en espérant parvenir à les utiliser efficacement.

Merci.

Link to comment
Share on other sites

  • 0

Bonjour Jérémie,

Merci pour cette suggestion. C'est intéressant car en effet il est possible que je doive corriger un peu la base de quelques données parasites ou mal affectées.

J'ai fait l'IMPORT dans FMP, qui a ainsi créé une table nommée "Table", et j'ai créé des tables Société, Site, Salarié, Devis. Chacune a eu une clé primaire automatiquement générée. La case calcul auto est cochée (cf Obtenir UUID) et aussi la case du bas "entrées automatiques non modifiables" (c'est nécessaire ça ? Quelle conséquence ?)

J'ai relié IMPORT à société par le Nom et l'Activité (car code postal est dans Site...), coché la case création de lien (côté Société, mais faut-il aussi cocher du côté IMPORT ?? je l'ai fait)

Pour la table Site, si j'ai bien compris, il faut créer une simple rubrique clé secondaire sociétéID (pour la lier à la clé primaire Société)

Pour la table Salarié, il faut créer une rubrique siteID (et aussi sociétéID ??)

Pour la table Devis, il faut créer une rubrique salariéID (et aussi siteID et sociétéID ??)

Mais pour le script, comment faire ?

J'ai créé un nouveau script, et écrit (en adaptant les noms) :

Le 06/05/2021 à 08:42, Jérémie Gimenez a dit :
  • Définir rubrique [ Societe_creation_depuis_import::Adresse1 ; Import::Adresse1Société ],
  • Définir rubrique [ Societe_creation_depuis_import::TelStandard ; Import::TelStandardSociété ],

Et il n'y a rien d'autre à faire ou écrire ?

Et là, j'exécute en cliquant sur la flèche noire d'activation. mais rien ne se passe...

Il faut faire le menu "Importation d'enregistrements / Fichier ? (et sélectionner IMPORT ?)

C'est justement ce que j'ai tenté. Finalement, j'ai fait IMPORTER enregistrements et ça a marché, mais sans le filtrage des doublons qui n'a pas fonctionné (toujours là !).

Où est l'erreur ?

Sinon, le processus global est correct ou pas ?

Je n'ai évidemment pas essayé le script pour SITE, vu que ne marche déjà pas avant cette phase...

Merci de bien vouloir m'éclairer.

 

 

Link to comment
Share on other sites

  • 0

Bonjour Laurent (?),

il y a 4 minutes, Laulow a dit :

C'est intéressant car en effet il est possible que je doive corriger un peu la base de quelques données parasites ou mal affectées.

C'est en effet le cas presque à chaque fois. On s'aperçoit après coup que quelque chose n'était pas béton dans l'Excel, on efface tout et on recommence.

il y a 5 minutes, Laulow a dit :

table nommée "Table", et j'ai créé des tables Société, Site, Salarié, Devis. Chacune a eu une clé primaire automatiquement générée. La case calcul auto est cochée (cf Obtenir UUID)

Tout ça est parfait.

il y a 6 minutes, Laulow a dit :

et aussi la case du bas "entrées automatiques non modifiables" (c'est nécessaire ça ? Quelle conséquence ?)

Conséquence : l'utilisateur ne pourra pas bidouiller manuellement l'identifiant. C'est un bon point.

il y a 7 minutes, Laulow a dit :

faut-il aussi cocher du côté IMPORT ??

Non. La création se fera uniquement du côté de Société (et Site, et Salarié, etc).

il y a 8 minutes, Laulow a dit :

(et aussi sociétéID ??)

Pas obligatoirement.

il y a 9 minutes, Laulow a dit :

(et aussi siteID et sociétéID ??)

Au moins l'une des deux. En effet, un devis, une facture, un BDC, ne peut pas ne pas être raccroché à une entité juridique. Il faut donc l'identifiant de cette entité dans le document. A priori, il y a un SIRET par site, donc ça serait plutôt ID_site.

il y a 11 minutes, Laulow a dit :

Sinon, le processus global est correct ou pas ?

Alors, le processus global serait :

  • on part avec toutes les tables vides,
  • on importe l'Excel complet dans IMPORT,
  • on fait une boucle depuis le premier enregistrement jusqu'au dernier,
    • dans chaque enregistrement, on crée les enregistrements enfants grâce à des Définir rubrique (via les fameux liens où l'option de création est cochée),
    • oui, cela est censé suffire à créer les enregistrements, et sans doublon.

Avant de faire cette boucle immense, assure-toi bien que les créations via lien fonctionnent : tu vides entièrement la table Société, tu te places dans la table Import, tu fais un Définir rubrique [ Import_Société_creation_depuis_import::rubrique ; N'importe-quelle-valeur ], puis tu vas dans les sociétés et tu dois y trouver un enregistrement avec la valeur dans la rubrique.

Ensuite, tu vas sur une autre ligne d'importation, mais de la même société ; tu fais à nouveau le Définir rubrique ; puis tu regardes le résultat dans la table des sociétés. Il ne doit y en avoir qu'une.

Ce point est à résoudre avant de programmer le reste, car c'est la clé.

Bonne exploration,

Jérémie

Link to comment
Share on other sites

  • 0

Merci pour la validation du "début"...

OK pour décocher à gauche (IMPORT)

Concernant :

il y a 26 minutes, Jérémie Gimenez a dit :

on fait une boucle depuis le premier enregistrement jusqu'au dernier,

  • dans chaque enregistrement, on crée les enregistrements enfants grâce à des Définir rubrique

J'ai trouvé la fonction Boucle à droite, et en double-cliquant, ça donne :

Boucle

Fin de boucle

Il faut donc mettre quelque chose au milieu. Ce sont les 2 "Définir rubrique" :

Le 06/05/2021 à 08:42, Jérémie Gimenez a dit :
  • Définir rubrique [ Societe_creation_depuis_import::Adresse1 ; Import::Adresse1Société ],
  • Définir rubrique [ Societe_creation_depuis_import::TelStandard ; Import::TelStandardSociété ],

ou bien autre chose ? Et comment "dire" que c'est du premier au dernier ?

Pour la vérification "via lien", c'est uniquement les liens "entre rubriques", on n'a pas besoin à ce stade-là de lier les clés primaires et secondaires des différentes tables ?

Et pour :

il y a 47 minutes, Jérémie Gimenez a dit :

tu te places dans la table Import, tu fais un Définir rubrique [ Import_Société_creation_depuis_import::rubrique ; N'importe-quelle-valeur ]

"tu fais un Définir"... mais comment ? En créant un script où je colle cette ligne (puis active la flèche) ??? Je ne sais pas.

Merci.

 

Link to comment
Share on other sites

  • 0

Bonjour Apophis,

Je suis en train de voir votre :

Le 05/05/2021 à 21:18, Apophis000 a dit :

La plus simple est un script, qui vas faire un tris par ordre croissent sur le nom. Puis avec une "boucle script" ont compare le 1er nom avec le 2em , Si = ont supprime le 2em . Fin de si , ont masque le 1er ( ignoré enregistrement ) et ont recommance la boucle jusque quand il y a plus d'enregistrement ( non masqué )

J'ai essayé (en PJ) de faire ce que vous dites, mais à l'évidence c'est aussi faux qu'incomplet. Il me manque les libellés informatiques (ignorer, masquer, etc)... et comment indiquer le deuxième nom ?

Que faut-il corriger et comment ?

Merci

 

 

Capture d’écran 2021-05-07 à 18.06.04.png

Link to comment
Share on other sites

  • 0

Vous devez écrire un script comme quand vous le faite la manip manuellement . il faut tout les étapes ... 

 

1 ont affiche tout les enreg. ( au cas ou )

2 ont trie alphabétiquement ( ordre croissent )

3 ont commence la boucle

4 ont se positionne sur le 1er enregistrement

5 ont mémosise en variable le nom ( ici pour moi c'est le nom complet d'une personne )

6 ont ignore l'enregistrement ( cad ont l'enlève des enregistrement visible, ça supprime pas... ça le masque simplement   ) du coup , l'enregistrement suivent deviens le premier

7 ont compar les 2 nom  ( si la variable est egal au nom)

8 si oui supprimé l'enreg.

9 fin de si

10 fin de boucle si pus aucun enregistrement visible

11 fin de boucle

 

000doub.png.78ee2340483078c809abf684bf61b059.png

Link to comment
Share on other sites

  • 0

Super, merci. Je vais tester cela !!

 

Et pour l'autre syntaxe pour la Table Site (et les autres, mais ce sera identique, j'imagine), concernant :

Le 05/05/2021 à 21:18, Apophis000 a dit :

Bin ! justement avec la fonction remplacer :) ... Ont mémorise ( met en variable )  le nom de société et son "ID unique"( clef primaire ) ont passe sur la table " Sites " , Onr recherche le nom , Puis ont remplace le nom de sociètè par l'id pour faire la clé étrangère ,et donc le le lien .

Là, j'ai cherché la fonction "mémoriser" dans la partie droite des fonctions, mais je ne la trouve pas. C'est aussi un script du même genre ? Ou un petit peu différent (vu que vous parlez de variable) ?

Merci !

 

Link to comment
Share on other sites

  • 0
il y a 28 minutes, Laulow a dit :

Ont mémorise ( met en variable )

Mettre dans une variable donc :)

idem ici

il y a 57 minutes, Apophis000 a dit :

5 ont mémorise en variable le nom ( ici pour moi c'est le nom complet d'une personne )

 

Link to comment
Share on other sites

  • 0

Pour des manip avec la fonction remplacer . Comme çà le fait pour tout les enregistrement actif, pas besoint de le faire par script ( ont peu mais comme cest que 1x ... )

000remplacer.thumb.png.7e81b77fd713e18c26f45682fad881d1.png

Link to comment
Share on other sites

  • 0

Merci beaucoup.

Mais avant de me pencher dessus, je reviens sur le premier script : finalement, il y a un souci. Quand je lance l'exécution, les doublons restent...

Je mets en copie mon script, normalement bien recopié.

Je précise que ma Table Société s'appelle chez moi "SOC", la rubrique nom de SOC est "Nom Sté". Et la Table ayant importé les données d'EXCEL s'appelle "Table".

Est-ce que la variable $nom est bien écrite ainsi (sans majuscule), chez moi ?

Je me place sur le modèle Formulaire de Société, sur le premier enregistrement, je vais sur le script, je clique et ça va jusqu'à la fin des enregistrements sans avoir rien supprimé...

Vous comprenez pourquoi ?

 

 

Capture d’écran 2021-05-07 à 22.24.10.png

Link to comment
Share on other sites

  • 0
il y a 15 minutes, Laulow a dit :

Est-ce que la variable $nom est bien écrite ainsi (sans majuscule), chez moi ?

pas importent

 

Le script est fait pour travailler sur la table SOC . donc il faut de préférence afficher et être sur cette table en mode tableau

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...