Jump to content
  • 0

Remplir un modèle de (toutes les) rubriques


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 post
Share on other sites
  • Answers 101
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

Popular Posts

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 "re

Bonjour, Avec le sélecteur de rubriques, ça va vite…

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é

Posted Images

Recommended Posts

  • 0

Bonjour Apophis,

C'est exactement cela, il fallait être en "tableau"... Bien vu !

Petite précision : il ne faut pas lier les tables au préalable, par exemple sur la rubrique "Nom Sté" ? Le script travaille indépendamment de tout lien physique (pour faire ce travail de dédoublonnage) ?

Toutefois, et cela m'étonne, il reste quelques erreurs, avec des doublons persistants, alors même qu'après une analyse minutieuse il n'y a strictement aucune erreur de saisie (pas de virgule ou d'espace en plus sur un des noms doublonnés, par exemples), c'est donc bien un nom parfaitement identique... Bizarre, non ?

Ce n'est pas trop gênant, car il n'y en a qu'une quarantaine, que je peux supprimer manuellement, mais cela m'étonne car l'informatique est normalement sans erreur possible.

Un second critère additionnel (par exemple le code postal), pourrait-il aider à éviter cela (en affinant la requête) ?

Faudrait-il ajouter ? :

Ligne 6 (actuelle) : insertion de > Définir variable [ $Code postal ; Valeur: SOC::Code postal ]

Ligne 8 (donc devenue ligne 9) : insertion de > Si [ SOC::Code postal = $Code postal ]

ou bien les lignes doivent-elles être agencées différemment ? (on peut placer 2 fois "Si" à la suite ou faut-il un Et si ?

 

Maintenant, pour le deuxième script (clé secondaire), je joins le mien, mais là j'ai peut-être mal fait le parallèle avec le vôtre.

Déjà, on se place sur le Modèle "tableau" de SIT, si j'ai bien compris, pour le lancer ?

Côté rédaction, voir PJ.

Ligne 3 : Vous avez mis le nom de la ville "Quebec". En extrapolant chez moi, je ne peux pas écrire le nom d'une seule société, alors qu'il y en a des centaines à changer ! Là, je ne comprends pas quoi mettre...

Ligne 5 : j'ai créé une valeur personnalisée pour mettre la clé secondaire contenue dans SIT. C'est bon ?

Merci de votre précieuse aide !

 

 

Capture d’écran 2021-05-08 à 11.22.43.png

Link to post
Share on other sites
  • 0

NB : pour compléter, je viens de m'apercevoir que le souci des doublons intervient majoritairement lorsqu'il n'y a pas d'adresse ni de code postal (juste le nom et le téléphone identiques).

Link to post
Share on other sites
  • 0
Il y a 5 heures, Laulow a dit :

car l'informatique est normalement sans erreur possible.

Tout a fait , donc si ca a pas trouver de nom identique c'est qu'ils sont diférent ...

 

Il y a 5 heures, Laulow a dit :

Un second critère additionnel

Ont peu rajouter des critères , mais ça réduit les chances de trouver , puisqu'il y en a plus a trouver de =  . Par contre ca précise la similitude des 2 enregistrement

 

Il y a 5 heures, Laulow a dit :

Ligne 3 : Vous avez mis le nom de la ville "Quebec". En extrapolant chez moi, je ne peux pas écrire le nom d'une seule société, alors qu'il y en a des centaines à changer ! Là, je ne comprends pas quoi mettre...

Ligne 5 : j'ai créé une valeur personnalisée pour mettre la clé secondaire contenue dans SIT. C'est bon ?

3 dans ce script oui un seul nom ... c'est un script de base , a évidement adapté a votre sauce .

5 Heuu non 😕 Vous pouvez pas mettre le nom d'une rubrique dans une rubrique ... ?!?

 

Vous avez pas suivi mon résonnement  ... Ou je me suis mal exprimer comme d’habitude :P

Partent de votre table unique , Ont subdivise en plusieurs table . Une devient les Sociétés, une autre les Sites et ...

Il faut commencer par les sociétés car c'est pour moi , c'est le haut de la pyramide ( Des sociétés découle les site qui amène au employer qui font les devis ... )

Un fois que ont a la table Soc. avec pour chaque Société un id unique ( clef primère )

Ont peu alors remplacer dans la table Sit les nom de société par cette id , pour fair la clef étrangère .

Une fois fait ont peu alors renommé l'intituler de la rubrique "Nom de société" par l'intituler de clef étrangère ( exp: KFPsocieteID )

 

Rapelle , un lien standard clef primaire-clef étrangère. Est le faite de lier la clef primaire de la table mère,  à une rubrique vide , qui sera la clef étrangère dans la table fille . Donc si par exp. ma société BIDUL a comme ID 123 . Pour lier l'enregistrement fille , ont rempli la clef étrangère de celle ci , avec l'id de la société BIDUL, soit 123

 

Si tu veux automatiser le script , Ont peu faire un peu comme pour les doublon

  • Il faut partir de la table SOC.( table ou liste )
  • afficher tout
  • ce positionner sur le 1er enreg.
  • boucle
  • mettre en variable l'id ( $ID )
  • mettre en variable le non de société ( $SOC )
  • activer modèle SIT( table )
  • afficher tout
  • mode recherche
  • définir rubrique ( sit::nom societe ; $SOC ) ( ont recherche le nom mémorisée)
  • exécuter la recherche
  • remplacer ...( sit::nom societe ; $ID )
  • activer modèle SOC
  • ce positionner sur le 1er enreg.
  • ignorer l'enreg.
  • fin de boucle si nb d'enreg trouver =0
  • fin de boucle

Une fois tout fait ont peu alors renommé l'intituler de la rubrique "nom societe" de la table SIT par KFPsocieteID  Et ont peu désormais faire le lien KP et KF dans le graph des lien.

 

Link to post
Share on other sites
  • 0

Je chipote...😜 : il est inutile de faire « afficher tout » avant le passage en mode recherche. L’action « exécuter la recherche » s’exécute sur l’ensemble des enregistrements de la table indépendamment de la sélection en cours ( au contraire de ses pendents « restreindre l’ensemble trouvé » ou «  développer l’ensemble trouver »)

Link to post
Share on other sites
  • 0

Bonjour Apophis,

Merci pour ces informations. Non, vous êtes clair, c'est plutôt moi qui ai du mal à comprendre le "processus".

Comme il y a eu plusieurs pistes de réflexion données, et que j'ai essayé de voir ces diverses approches, je me mélange un peu la logique des étapes.

 

Sinon pour préciser, oui, je fais souvent des backups...

 

Concernant :

Il y a 5 heures, Apophis000 a dit :

 

Il y a 11 heures, Laulow a dit :

Un second critère additionnel

Ont peu rajouter des critères , mais ça réduit les chances de trouver , puisqu'il y en a plus a trouver de =  . Par contre ca précise la similitude des 2 enregistrement

Pour tester la méthode avec 2 critères, j'ai écrit le script (en PJ). Car je vais devoir l'utiliser pour les Salariés pour dédoublonner avec forcément le prénom + le nom (peut-être en plus du nom de société, d'ailleurs, mais une fois que vous m'aurez validé mon script, j'aurai compris la technique pour rajouter un 3ème critère éventuel).

Je ne suis notamment pas sûr de la ligne 10 et 11 (formule Sinon si, pertinente ?). Et est-ce que le "Supprimer enreg." est bien placé ?

Merci de me dire.

 

Je mets aussi en pièce jointe le 2ème script pour la Table SITE (et les tables suivantes : SAL, DEV, etc).

Là, j'ai repris votre déroulé précédent, en mettant mes propres données. Pouvez-vous regarder si c'est juste (car "Exécuter la recherche" n'est pas renseigné de données, car chez vous non plus).

Merci.

 

 

Capture d’écran 2021-05-08 à 22.17.49.jpg

Capture d’écran 2021-05-08 à 23.24.56.jpg

Link to post
Share on other sites
  • 0
il y a 8 minutes, Laulow a dit :

Je ne suis notamment pas sûr de la ligne 10 et 11 (formule Sinon si, pertinente ?). Et est-ce que le "Supprimer enreg." est bien placé ?

Avec "sinon si " c'est soit l'un soit l'autre ... vous vous voulez que les 2 critères sont valide ensemble non ?

Dans ce cas pas besoint de sinon si , La condition "si" peu être

SOC::Nom sté = $nom and SOC::Code postal = $code postal

CAD ici les 2 condition doit être vrais pour suprimmée

Link to post
Share on other sites
  • 0

Capture d’écran 2021-05-08 à 23.24.56.jpg

Ligne 9 ??? vous avez une variable $SOC ??  non défini avant ... . Ici c'est votre variable $nom ( c'est le non de société que vous voulez rechercher )

Ligne 11 Idem , $_kptid n'existe pas , ici c'est la variable du num ID cad $societeID

 

Vous créé 2 variable , c'est pour les utiliser plus loin dans la script .

Link to post
Share on other sites
  • 0

Apophis,

Déjà une très bonne nouvelle, cela :

Il y a 2 heures, Apophis000 a dit :

Avec "sinon si " c'est soit l'un soit l'autre ... vous vous voulez que les 2 critères sont valide ensemble non ?

Dans ce cas pas besoint de sinon si , La condition "si" peu être

SOC::Nom sté = $nom and SOC::Code postal = $code postal

CAD ici les 2 condition doit être vrais pour suprimmée

 

marche parfaitement, et de plus j'ai trouvé l'origine des soucis de dédoublonnage imparfait : le Trier enreg. n'avait pas la bonne rubrique affichée et générait donc probablement cette anomalie !!!

Je vais donc pouvoir continuer tous les dédoublonnages.

Pour les Sites, 95 % des sociétés ont 1 seul site (le siège social), le reste c'est des établissements secondaires ou usine (donc peu de doublons).

Au préalable, il va falloir rapatrier les clés secondaires de Societes ?

Et on en arrive donc à :

Il y a 1 heure, Apophis000 a dit :

Ligne 9 ??? vous avez une variable $SOC ??  non défini avant ... . Ici c'est votre variable $nom ( c'est le non de société que vous voulez rechercher )

Ligne 11 Idem , $_kptid n'existe pas , ici c'est la variable du num ID cad $societeID

Je l'ai corrigé (voir PJ) comme vous m'avez dit.

Est-ce bon là ?

A tout hasard, je vous précise que la clé primaire de SOCIETE est __kptID, celle de SITE est aussi __kptID (et pareil pour SAL et DEV)

et la rubrique clé foreign de Société dans la table SITE est _kftSocieteID

Merci.

 

NB Lorsque je vais me positionner sur la table SITE, pour utiliser ce script (affectant la clé secondaire de Société), cette table devra être la version purgée des doublons de Sociétés ? Ou bien la totalité des données ?

Je vous rappelle que la Base totale correspond à tous les devis réalisés, donc sans doublons (avec par contre forcément des doublons de sociétés, sites, salariés, comme vous le savez).

 

 

 

Capture d’écran 2021-05-09 à 14.06.17.png

Link to post
Share on other sites
  • 0
il y a une heure, Laulow a dit :

Est-ce bon là ?

ca a l'aire ;)

 

il y a une heure, Laulow a dit :

NB Lorsque je vais me positionner sur la table SITE, pour utiliser ce script (affectant la clé secondaire de Société), cette table devra être la version purgée des doublons de Sociétés ? Ou bien la totalité des données ?

Le faire avant ou après , ici a pas d'importance . Mais attention si une société a plusieurs sites ??

Link to post
Share on other sites
  • 0

Hélas, on me dit qu'il y a la cible est une table non liée !! J'ai été obligé de redémarrer FMP car j'avais fait "Continuer" quand le message d erreur est arrivé...

Sinon, le travail avait commencé, en remplaçant le nom de société par des clés...

Link to post
Share on other sites
  • 0

Non, pardon, je me suis trompé.

voici le message complet en PJ.

La colonne a finalement été remplie que d'une seule et même clé...

.

Capture d’écran 2021-05-09 à 16.10.53.png

En fait le texte "cible table non liée" est arrivé ensuite, en cliquant continuer.

Link to post
Share on other sites
  • 0

Oui, je me mets sur SOC, puis vais sur la fenêtre de l'Espace script, sur le script en question et clique la flèche de lancement.

 

Par ailleurs, pourquoi aviez-vous évoqué cela, en me mettant en garde :

il y a 59 minutes, Apophis000 a dit :

Mais attention si une société a plusieurs sites ??

Quel pourrait être la conséquence ou le risque concret ?

Merci

 

Link to post
Share on other sites
  • 0

c'est pour avent que vous enlever tout les double . je connais pas votre fichier , mais j'imagine que il peu y avoir plusieurs employer dans une société et ou plusieur lieu également.

Style les bureaux administratif,maison mère, sucure sal, les stock , et la logistique  .  Pour certaine entreprise tout est pas au même endroi...

Link to post
Share on other sites
  • 0

Ah oui, d'accord.

En effet, il y a parfois beaucoup d'employés (20 à 30 !), mais peu de Sites distincts (je n'ai quasiment que les Sièges sociaux à 95 %, et quelques usines et succursales à 5%). Autrement dit, le fichiers Sociétés (expurgés) est quasiment les Sites.

Autant pour les Sociétés (et même les Sites) c'est simple, une ligne d'EXCEL = 1 enregistrement de FMP, autant pour les Salariés je me demande si la solution (pour ne pas en perdre en effaçant à tort) ne serait pas de mettre plusieurs paramètres forts, comme le nom de société, adresse, en plus du prénom et nom, avec l'objectif de mettre les clés secondaires (_kftSocieteID et _kftSiteID) dans SALARIE.

Et ensuite m'occuper de dédoublonner. Qu'en pensez-vous ?

 

Mais pour l'étape de remplir la Table SITE (actuellement bloquée), vue tout à l'heure, et qui ne marche hélas pas, vous voyez le souci dans le script ? Car c'est ce que dit FMP dans son message d'erreur ("les critères de recherche ne sont pas valides). C'est normal que "Exécuter la recherche" soit vide ??? Alors qu'il y a des crochets pour accueillir apparemment une donnée... Et hier soir, Magalie avait évoqué le fait qu'on pouvait ne pas "Afficher tous les enreg." car la commande suivante le sous-entendait. c'est pas ça, le problème ? Je lance des pistes comme ça...

Et est-ce que le fait de lier certaines rubriques (fondamentales) entre elles n'aiderait pas ?

Merci.

 

Link to post
Share on other sites
  • 0
Il y a 5 heures, Laulow a dit :

A tout hasard, je vous précise que la clé primaire de SOCIETE est __kptID, celle de SITE est aussi __kptID (et pareil pour SAL et DEV)

et la rubrique clé foreign de Société dans la table SITE est _kftSocieteID

Pour ne pas écraser la valeur de la rubrique nom Sté, il faut que votre Définir Rubrique de la ligne 11 ait pour cible _kftSocieteID de la table SITE. Quand tout sera fini, vous supprimerez la rubrique nom Sté.

Votre problème est surprenant car le message d’erreur signifie que la variable $nom doit arriver vide (on ne peut pas faire de rechercher sans rentrer de critère). Pourriez-vous avoir des enregistrements dont le nom Sté ne serait pas rempli dans la table SOC ?

Link to post
Share on other sites
  • 0

Bonsoir,

Si, il y a effectivement 1 enregistrement où nom Sté est vide... Je l'ai supprimé.

J'ai changé votre syntaxe en ligne 11 (voir PJ), et en le lançant, en étant positionné sur SOC, ça a planté. J'ai dû relancer FMP.

Une idée ?

 

 

Capture d’écran 2021-05-09 à 22.06.56.png

Capture d’écran 2021-05-09 à 22.06.16.png

Link to post
Share on other sites
  • 0

Bonjour Apophis,

En effet, bien vu...

 

Bonjour Magalie,

Merci beaucoup pour cette juducieuse correction, car cela fonctionne désormais. Super, merci bien !

Du coup, je vais faire pareil (en adaptant / extrapolant) avec les Salariés. Ce script modifié est en pièce jointe. J'espère qu'il est juste ! (à moins qu'il faille modifier un petit peu en procédant à la double affectation de la clé secondaire Societe ET Site ? En vue de pouvoir par la suite naviguer de tables en tables plus aisément ?)

NB : Déjà, là, je me suis juste interrogé pour la ligne 9. Du coup, j'ai recréé "Nom Etabl" cette fois dans la table SALARIE (qui n'existait pas en dur à cet endroit). Cela me semblait logique.

 

Plus généralement, compte tenu du fait qu'il faut faire 2 actions sur chaque Table (hormis Société, où c'est uniquement les doublons), vaut-il mieux faire l'attribution des clés secondaires avant ou après le dédoublonnage de toutes les tables suivantes ?

 

Sinon, il est temps de réfléchir à la méthode :

La Base comptant environ 1.000 lignes, soit 1.000 Devis, il y a en fait 300 Sociétés. Comme ce sont presque que des Sièges (90 %), cela fait normalement 330 lignes de Sites (dont 30 établissements secondaires, usines).

Les Salariés sont rattachés aux Sites (et aussi, par extension, aux Sociétés, évidemment).

La petite difficulté, c'est que chaque ligne comporte plusieurs colonnes archivant des données de divers Salariés (donc d'un même enregistrement), soit prénom, nom, téléphone, email, etc. C'est parce qu'il y a parfois un directeur, un sous-directeur, une assistante, etc, etc.

Mais le dédoublonnage est délicat, car si un Devis a été rédigé pour un nouveau groupe de salariés (destinataires d'un tout nouveau devis), le premier dédoublonnage de Sociétés risque de me faire perdre ces personnes si l'éviction d'une des lignes redondantes est la seule à contenir ces gens-là...

Il faut donc, idéalement, que j'ai une base Salariés où sont affichés la totalité des Salariés (y compris certains apparaissant, un peu par la force des choses 4 à 6 fois, à cause des multiples duplications au fil du temps). Le script du dédoublonnage les enlèvera, mais au moins un specimen de chaque restera !

 

Comment faire, à partir d'EXCEL ? La présentation en ligne telle quelle est-elle adéquate ? Y a-t-il une technique pour contourner cette difficulté (sans doute habituelle) ? Ou faut-il reconfigurer la base EXCEL mais dans quel sens ?

Visuellement, cela donne :

 

Colonne B2              Colonne C2             Colonne D2                Colonne E2           Colonne F2                Colonne G2

Prénom SAL1           Nom SAL1                Prénom SAL2             Nom SAL2             Prénom SAL3             Nom SAL3          etc > 15 ou 20 !

(+ les téléphones directs, mails, etc)

 

Merci.

 

 

 

La PJ.

Capture d’écran 2021-05-10 à 10.47.16.png

Link to post
Share on other sites
  • 0

Il y a donc des manip a faire avant le déboulonnage et le renommage des nom en ID

En bref comme déjà dis , vous devez passer de une ligne en plusieurs pour tout séparé

EXP ici la ligne unique au dessus et en dessou ce qui faut .

000BDD.png.0ba11dc48d91a9d084c13e7464261ca0.png

 

Les sites dois avoir l'ID Societe , les salarier dois avoir l'ID Site, mais pas besoin de l'id societe.

Car dans la structure de la base FM vous allez avoir qqchose comme ceci

 

000struc.png.b16d534bcb6cda1806c111a74dbaf4e9.png

Link to post
Share on other sites
  • 0

OK, merci beaucoup pour ces précisions.

C'est bien ce qui me semblait, ce matin. Je vais donc procéder à ce "découpage" d'EXCEL.

 

Sinon, pour le script que j'ai réécrit "pour Salariés" (inspiré de "pour Site"), mis en PJ, il était exact (libellé ainsi) ?

 

Il y a 3 heures, Apophis000 a dit :

mais pas besoin de l'id societe

OK, mais juste pour savoir : le fait de renseigner (éventuellement, avec un script similaire réadapté) aussi cette clé Société chez Salarié ne serait-il pas un atout pour d'une part l'intégrité des données, et d'autre part le fait d'utiliser (plus tard, éventuellement) des données dans des Tables Externes (qui doivent être liées) dans ces Tables ?

 

Merci.

 

 

Link to post
Share on other sites
  • 0
il y a 44 minutes, Laulow a dit :

Sinon, pour le script que j'ai réécrit "pour Salariés" (inspiré de "pour Site"), mis en PJ, il était exact (libellé ainsi) ?

Oui c ok , mais ici , vu que la rubrique existe pas , ça vous impose de crée la rubrique "SAL::_kftsiteID" avant ... Je proposai plutot de simplement changer le non de site en ID , vu que ont en aura plus besoin , et puis renommé la rubrique nom site en kftsiteID. soit " remplacer.. ( SAL::nom Etabl : $siteiID) . "

Avec la nouvelle rubrique crée kftsiteID , il faudra en plus supprimer la rubrique non site après .... mais bon ca revien au même :)

 

il y a 55 minutes, Laulow a dit :

OK, mais juste pour savoir : le fait de renseigner (éventuellement, avec un script similaire réadapté) aussi cette clé Société chez Salarié

Bha , vous pouvez, mais c'est vraiment pas utile ... c'est comme si vous me demander , quel est la couleur du cheval blanc de napoléon ? ... 😛

Regarder mon exemple de structure de la base FM . Chaque table est lier a une autre . Vous pouvez récupérer n'importe quel info dans chaque'une des table lier ... Dans mon exemple avec la nasa , si Neil Amstrong est lier au site de cap canavéral , vu que ce site fait partie de la nasa , Neil amstrong fait donc partie de la nasa , c'est de la logique de base ... Neil fait donc pas partie de Roscosmos ou autre ... Vue qu'il est lier au site qui est lier a l'entreprise ...

Link to post
Share on other sites
  • 0
il y a 4 minutes, Apophis000 a dit :

il faudra en plus supprimer la rubrique non site après

J'ai bien compris l'explication, et en effet j'ai déjà créé la rubrique _kftSiteID. Pour quelle raison faudra-t-il la "supprimer après" ? Elle risque de causer des conflits avec les données ? Ou c'est pour une autre raison ? Il me semblait qu'une clé foreign était nécessaire dans le cadre des liens entre tables.

 

2) OK pour l'explication des tables liées. Ça peut se propager en utilisant une table située entre les deux (quelque soit le sens N > 1 ou 1 > N).

 

3) Concernant la découpe d'EXCEL, j'ai parfaitement compris le principe.

La méthode que je vais utiliser me semble être :

Ligne 1 : c'est les noms de rubriques

Duplication de la ligne 2 (1er enregistrement) devenant alors la ligne 3. Recopie du Salarié 2 en mêmes colonnes que Salarié 1 (mais juste au-dessous évidemment). Le fait d'avoir dupliqué la ligne permet de conserver toutes les données importantes comme le nom de la société et le nom du site.

Pour salarié 3, pareil, et ainsi de suite.

Et c'est une fois cela fait, que je ferai d'abord le dédoublonnage, puis le renommage/clé ?

 

4) Je m'interroge aussi sur ma dernière Table (liée à Devis : les Conversations). Elles se présentent elles aussi en ligne, et correspondent à toutes les conversations eues à propos d'un devis. La Table pointe vers Devis en N > 1 (comme les Lignes devis dans votre exemple)

Le structure est (pour chaque conversation) :

une Date / un Interlocuteur / un Objet (seulement 3 rubriques)

et s'empilent actuellement elles aussi de colonnes en colonnes. Je dois faire pareil que pour les salariés ? La même logique ?

Sachant que chaque ligne est un devis, et aura donc sa clé primaire automatique quand j'importerai toute la base dans la Table Conversation. C'est ce point qui me fait m'interroger.

Merci.

 

Link to post
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...
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...