Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 05/23/21 in all areas

  1. Bien le bonjour, Une question a été abordée plusieurs fois : comment créer un PDF puis l'enregistrer dans la base, c'est à dire dans un conteneur, lors d'un script exécuté sur le serveur ? Chacun sait que l'option Sauvegarder en PDF fonctionne depuis peu sur serveur, depuis FM 16, en fait. Cependant, les actions Insérer fichier, Insérer image, etc. ne fonctionnent toujours pas, en FM 19, sur le serveur… Exemple d'utilisation : je valide une facture et l'envoie à mon client, en arrière plan, je veux que cette facture soit sauvegardée en PDF et insérée dans un enregistrement de FileMaker, dans un conteneur, pour consultation ultérieure. Cela se fait avec simplicité en script côté client. Cependant, pour certaines raisons, on peut souhaiter que ce processus s'exécute côté serveur. Dans certains cas, on est même obligés de faire notre affaire sur le serveur… Et là, bien sûr, l'absence de l'action Insérer fichier est fort ennuyeuse. Sauf qu'après vérification, et grâce à l'idée pertinente de @Lucie Guilbert : Insérer depuis URL fonctionne ! Puisqu'on a déjà défini une variable $_fichier au moment de déposer le PDF, il suffit d'ajouter "file:" devant et hop, Insérer depuis URL permet de retrouver notre PDF dans le conteneur ! C'était tout. Bonne fin de semaine à tous ! Jérémie
    4 points
  2. Vous étiez encore plus endormis que moi ce matin de 2017 (à partir de 23:52)
    4 points
  3. La gestion des formats de chemin de fichier peut-être un casse-tête. La version 19 nous apporte un peu de facilité avec les fonctions ConvertFromFileMakerPath et ConvertToFileMakerPath un exemple list ( get ( DocumentsPath ) ; ConvertFromFileMakerPath ( get ( DocumentsPath ) ; urlpath ) ) donne /Macintosh HD/Users/tcolles/Documents/ file:///Users/tcolles/Documents/
    3 points
  4. Bonsoir, le VPN n'est pas magique, et FileMaker ne peut pas être trompé parce que ce n'est pas "exprès" qu'il est plus lent sur un réseau distant. La durée d'une opération est le résultat du nombre d'appels distants multiplié par la durée du ping. Sur un réseau local, le ping est très rapide. Voici ce qu'il est possible de faire pour améliorer les choses : - optimiser son développement pour avoir besoin de moins d'appels distants (par exemple -désolé Jérémie mais exporter depuis une liste virtuelle est souvent la plus gourmande des solutions-, mais les exports sont très consommateurs d'appels distants de toute façon). Mais optimiser, c'est super important. - choisir un hébergeur avec un ping court (donc pas trop loin de chez vous, avec un datacenter performant..) - confier les tâches lourdes aux serveur (pourquoi exporter côté client ? quel format de fichier souhaité ? c'est très rarement nécessaire) - le cas particulier des tris : les tris sur la table courante sont exécutés sur serveur à partir de 19.2. Ça pose plein de problèmes et nous recommandons de désactiver cela, mais c'est rapide. En revanche il est vrai que les tris côté client sont très lents en raison du téléchargement des enregistrements.
    3 points
  5. Une façon d'arriver à ce genre de résultat est d'utiliser une barre de bouton plutôt qu'un bouton simple. En effet dans la barre de bouton le texte peut être le résultat d'un calcul et donc on a la possibilité d'utiliser les fonctions d'enrichissement de texte. Exemple :
    2 points
  6. Bonjour, Deux méthodes simples pour dédoublonner : - dans la continuité de la proposition de @Jérémie Gimenez qui exploite la statistique de type ListeDe, créer un calcul (une rubrique ou une variable dans un script) qui utilise la fonction UniqueValues (qui peut aussi être combinée à SortValues pour avoir les valeurs dédoublonnées et triées) - notons que ces fonctions ne sont pas traduites en FR. - utiliser le principe de regroupement lors de l'export. Trier les enregistrements sur le Nom - exporter la rubrique Nom (en Excel par exemple) en disant de regrouper par Nom (zone en haut à droite de la fenêtre d'export : grouper par Si on part de la première proposition, on peut par exemple réaliser un script qui va successivement dans les différentes tables, définit une variable et l'augmente des valeurs de la rubrique stat en dédoublonnant : $listNom = UniqueValues ( liste ( $listNom ; RubStatTable1 ) ) et puis $listNom = UniqueValues ( liste ( $listNom ; RubStatTable2 ) ), etc. Cette variable pourra ensuite servir à une boucle de création des enregistrements des noms de personne dans la table dédiée. bien à toi, Tanguy
    2 points
  7. Bonsoir, Je rejoins @Jérémie Gimenez sur le fait de ne pas trop disperser les données. Par contre, je garderais une table Telecom qui permet d’avoir autant d’adresses électroniques, de numéro de téléphone, d’identifiant de messagerie instantanée existant ou à venir que l’on souhaite. De même pour les adresses postales, je les trouve avantageusement bien dans une table séparée (mais une seule table pour toutes les adresses dans toute la solution).
    2 points
  8. Bonsoir, Sauf erreur de ma part, l'action Envoyer courrier fonctionne avec Mail ou Outlook. Pour utiliser Spark, je vous invite à utiliser l'action Ouvrir URL avec comme lien : mailto:adresseEmail?subject=objetDuMessage&body=message mailto:adresseEmail?subject=objetDuMessage&body=message&cc=adresseEmailBis Après avoir configuré Spark comme logiciel de messagerie par défaut dans les préférences de Mail.
    2 points
  9. Ah oui, je n’avais pas compris du tout 😂 Effectivement, chez moi aussi j'ai ce comportement, mais je doute sincèrement qu'on puisse y faire quoi que ce soit. Après, mon contexte est un peu différent, car l'utilisateur ne saisit une heure que lorsqu'il crée l'enregistrement (à ce moment-là, la rubrique est vide). C'est plutôt rare qu'il doive la modifier, mais j'ai l'impression que mes utilisateurs n'ont ni remarqué ce détail, ni même été gêné par celui-ci... ! Moi-même, je ne l'avais pas remarqué... Et bien si ! Mais en fait ce n'est pas si frustrant que ça. Un simple déclencheur de script sur la validation permet de reformater la saisie. L'utilisateur saisit "17h45" est le script remplace ça par "17:45:00" et ça marche bien. Je ne vois pas d'autre solution que de travailler avec deux rubriques : une texte, pour la saisie et l'affichage, l'autre en calcul, qui prend le contenu de la rubrique texte et le renvoie au format heure... Pas hyper pratique à gérer mais je n’ai pas mieux comme idée... De cette façon, lors de la modification de la rubrique texte, on aurait toujours le format "HH:MM" ou même "HH\hMM" d'affiché.
    2 points
  10. Loraga

    Support API PHP

    Bonjour Jérémie, merci pour ta réponse ! 😊 C'est bien ce que je voulais savoir, mais ne trouvant aucune info à ce sujet, je pensais alors avoir rêvé. C'était @David Julot qui m'en avait parlé en formation et m'avait averti en 2018, il me semble... Si @Lucie Guilbert a quelques infos supplémentaires à ajouter, je suis preneur 🙂 Dans tous les cas, je sais maintenant qu'il est temps de se mettre à la Data API pour les prochains projets ! Edit : on poste en même temps 🙂 Merci Lucie pour ces infos ! Étant actuellement en PHP 7.4 sur un serveur web en production, j'avais contourné ce souci de compatibilité avec le FileMaker PHP-API de Romain Dunand, mais du coup j'appréhendais le passage à PHP 8. Merci encore en tout cas, j'ai plus qu'à consulter vos liens et vidéos et je sais maintenant quoi apprendre cet été haha
    2 points
  11. J’ai une solution théorique à proposer mais absolument disproportionnée à mon avis : en exportant la structure en XML, on aura accès dans ce fichier aux informations souhaitées. Une transformation XSLT bien pensée doit même pouvoir nous livrer la liste des modèles à partir de la table d’origine (et même pas de l’occurrence de table). Mais c’est vraiment beaucoup de travail pour quelque chose que la boucle de @Jérémie Gimenezfera tout aussi bien.
    2 points
  12. Bonsoir, Peut-être en utilisant attributconteneur pour aller chercher le nom du fichier au lieu de laisser FileMaker totalement libre dans son interprétation à partir du conteneur ?
    1 point
  13. Tu peux essayer en définissant $path "file:" & $folder & T003 US::T003 Photo travail
    1 point
  14. Salut Abécé, Content de te lire à nouveau. Ma foi, c'est en bouclant qu'on devient boucleron… En gros, les étapes seront : se placer sur un modèle de la table, chercher les bons enregistrements, se placer sur le premier, faire une action (en l'occurrence un export de contenu de rubrique, ce qui implique que la rubrique soit présente et ouverte sur le modèle), question à résoudre : les noms de fichiers que l'on souhaite en sortie… Seront-ils à construire en fonction de l'enregistrement ou bien à restituer tels qu'ils étaient au moment de l'insertion dans le conteneur ? Fin de boucle si [ Obtenir ( NuméroEnreg ) = Obtenir ( NombreEnregTrouvés ) ], passer à l'enregistrement suivant. Ca te paraît clair ? Jérémie
    1 point
  15. La tête dans le guidon, beaucoup à faire. Je me suis aussi fait le feedback de ne pas assez chercher l'info par moi même et de trop vous solliciter. Mais bon si vous réclamez, je reviens hein
    1 point
  16. David Julot

    Un petit coucou…

    Bonjour tout le monde, J'ai l'impression que tout le monde à déserté le forum depuis 1 jour, est-ce que @Jérémie Gimenez est en vacances 😀 ? Si vous êtes de passage par ici, faites-moi un petit signe, que je me sente pas trop seul 😅 Bonne journée à tous !
    1 point
  17. Découvrez comment créer des fonctions personnalisées avec le plugin MBS dans FileMaker et JavaScript : Custom Functions stored in a database Fonctions personnalisées stockées dans une base de données Nous allons vous montrer comment stocker des fonctions personnalisées dans une base de données, les charger en mémoire et les appeler n'importe où avec le plugin FileMaker de MBS. Nombre de paramètres variable, disponible dans tous les fichiers ouverts et récursion possible. Custom Functions in JavaScript Fonctions personnalisées en JavaScript dans FileMaker Nous allons vous montrer comment les développeurs FileMaker peuvent utiliser JavaScript pour définir leurs propres fonctions personnalisées dans leur base de données de départ et les appeler ultérieurement à partir de n'importe quel fichier, n'importe où, pour effectuer des calculs.
    1 point
  18. Bonjour, Oui, c'est bien le site de Claris. "FileMaker" tout court désigne la plateforme, incluant le logiciel FileMaker Pro (développement et utilisation sur ordinateur personnel), FileMaker Server (mise à disposition des solutions développées avec FileMaker Pro sur un serveur), FileMaker Go (utilisation sur tablette iOS), WebDirect, Data API, etc.
    1 point
  19. merci ! Grace à toi j'ai trouvé. tout simple effectivement. Il suffit d'aller ensuite avec le bouton texte sélectionner la ligne et modifier la police, couleur, etc ... par contre selon mes ordis le saut à la ligne s'affiche correctement ou pas dans les propriétés du bouton.
    1 point
  20. Je rêve d'un endroit où on puisse saisir et lister toutes ces trouvailles, qui sont intéressantes et précieuses dans certains cas précis 😊 J'ai appris tellement de trucs et astuces sur ce forum, ou en regardant les vidéos des FM conférences aussi, ce serait top d'avoir une sorte d'index dans lequel on liste et classe par catégorie ce genre de détournements hyper pratiques. Merci @Jérémie Gimenez 😊
    1 point
  21. EDIT NB : dans mon cas, la réponse est ici : Macintosh HD⁩ ▸ ⁨Applications⁩ ▸ ⁨FileMaker Pro⁩ ▸ ⁨Contents⁩ ▸ ⁨Resources⁩ ▸ ⁨Themes⁩ ▸ ⁨apex_blue⁩.css Si on y fait des modifications, je pense qu'il faut les déclarer dans manifest.xml, dans le même dossier. Ceux qui s'amusaient déjà avec le CSS de FileMaker avant FMP 13 s'en souviennent sûrement… (désolé pour la grammaire, je suis fiévreux, ça m'aide pas)
    1 point
  22. Tandis que ma formule était pour une condition de masquage, ce qui est donc l'inverse et qui explique que le résultat soit également inversé…
    1 point
  23. Le Obtenir( NuméroEnreg ) <> 1 que j'avais mis en début de formule évite que le test ne soit appliqué si il s'agit du premier enregistrement, qui n'est pas forcément le 001 Et permet ainsi que cela fonctionne si on fait une recherche, sélection des num à partir d'un nombre autre que 1
    1 point
  24. Bonjour Pierre, Pour la sphère des personnes, je vais dans moins de détail, d'habitude. La table Contact étant l'intermédiaire entre Fournisseur et Personne, je l'appelle Fonction (elle peut contenir une rubrique fonction, d'ailleurs, ainsi que mail_professionnel, telephone_bureau, boolean_a_quitte_le_service). On aura une occurrence de Fonction entre Intermédiaire et Personne, une autre entre Client et Personne. En revanche, si j'ai des tâches réalisées, des actions d'inventaires, etc, je leur attribuerai directement la Personne, et non sa Fonction, c'est plus simple. Dans la table Personne, je mettrai directement les quelques rubriques supplémentaires pour mes salariés (y compris un booléen salarié), de sorte à ce qu'il n'y ait qu'une table. Les tables Courriel, Téléphone, Adresse sont là pour limiter le nombre de rubriques dans Personne ? Pareil, je ne ferais pas ça, ça complique un peu les choses. Dans la table Personne, je mettrai 2 rubriques de téléphone, 1 rubrique de mail (en sachant que telephone_bureau et mail_professionnel figurent déjà dans la table Fonction) et un jeu Adresse+CP+Ville, renseigné uniquement chez les salariés, car on n'est pas censés relever les adresses persos de nos interlocuteurs chez les fournisseurs ou clients. Au final, je n'aurais donc dans ce schéma que 2 tables rouges, réparties sur 3 occurrences : Fournisseur_Fonction, Fournisseur_Fonction_Personne, Personne (isolée) qui servira a priori pour le modèle Fiche Personne (dans une logique bouée-ancre). Ce sont des indications de principe, non obligatoires, bien sûr. Bonne journée, Jérémie
    1 point
  25. Merci @Jérémie Gimenez.. j'ai galéré mais j'y suis arrivé! Ça a vraiment simplifier dans ma tête.. mais surtout dans mon graphe des liens 💪. Merci beaucoup de prendre le temps, ça reste un défi, mais ça change tout de pouvoir en parler! 🤗 Suite... les personnes (représentant de fournisseur / employés) J'ai poursuivi le projet, j'arrive donc dans la section des fournisseurs des produits. Je me rends compte que pour chacun d'eux, je dois avoir un contact. - table Personne Sachant où je veux me rendre éventuellement : bons de travail assignation de tâche feuille de temps lien entre employé et équipement de protection individuel (c-à-d l'inventaire) ..., ... je pense utiliser cette table Personne pour les employées également, puisque dans les deux cas, il s'agit de saisir un nom, prénom, ... bref, les mêmes infos. Pour ce qui est des employés, j'aurai probablement un peu plus de data à inclure (no d'employé, probablement certaines clés pour des liens avec les parties du projet à venir) que ce qu'on trouve dans la table Personne. Mon idée Je ferais donc deux autres tables : - table Contact id_Contact (clé primaire) id_Fournisseur (clé étrangère liée à la table Fournisseur) id_Personne_FK (clé étrangère liée à la table Personne) - table Employé id_Employé (clé primaire) id_Personne_FK (clé étrangère liée à la table Personne) Je tente de réfléchir de façon plus optimale.. je crois commencer à comprendre la différence entre la façon de stocker vs la façon d'afficher. Je mets en pj mon graphe. Ça se tient comme logique? En passant, les tables en violet sur le côté, ce sont mes tables "développeur"
    1 point
  26. Loraga

    Rétablir enregistrement

    Via un script, on pourrait stocker la valeur initiale de la rubrique dans une variable globale dès que l'utilisateur sélectionne la rubrique (SurEntreeObjet). Si l'utilisateur clique sur annuler, on restaure alors la valeur initiale de la rubrique avec l'aide de cette variable. Logiquement, la rubrique sera déjà au bon format HH:MM:SS, on ne devrait donc pas à avoir à s'embêter en extrayant séparément les heures, les minutes et les secondes pour ensuite recréer l'heure avec la fonction Heure() (enfin je crois ?).
    1 point
  27. Loraga

    Rétablir enregistrement

    J'arrive après la guerre, mais une petite chose intéressante qui peut servir pour l'affichage, notamment dans un modèle d'email : On peut formater les données d'une rubrique de fusion, toujours via l'inspecteur > onglet données. Dans ma capture ci-dessous, j'ai à la fois reformaté l'affichage de la date et de l'horaire, alors que l'ensemble n'est qu'un simple bloc texte contenant les rubriques de fusion. Ça peut servir... Edit : Oups, je n’avais pas vu la page 2 😂 Oui, tout est permis sauf si on contrôle l'entrée de la rubrique par un calcul (via l'onglet Validation de la rubrique, dans gérer > bases de données - j'aime pas trop cette méthode car je trouve les boites de dialogues assez embêtantes et bloquantes pour l'utilisateur) L'autre solution, c'est de permettre à l'utilisateur de saisir l'heure comme il veut et ensuite reformater sa saisie via un script qu'on déclenchera sur la validation. Ainsi, peu importe s'il tape 9h12, 09h12 ou même 9:12, l'idée, c'est de corriger automatiquement et en toute transparence 😊
    1 point
  28. Magnifique, je dirais… Magnifique ou pas magnifique 540.mp4
    1 point
  29. Bonjour @Jérémie Gimenez, Effectivement, ça répond à ma question. Et c'est assez logique en fait… 🤦🏻‍♂️ Merci Bonne journée
    1 point
  30. Bonjour Thémis, Oui, je me souviens de cette discussion. Alors, boucler sur les enregistrements des différentes tables exigera de créer des scripts (ou des parties de script) avec les spécificités de chaque table, notamment la rubrique Table::nom, qui est forcément différente d'une table à l'autre. En outre, il faudra boucler à l'intérieur de chaque enregistrement (sous-boucle) si celui-ci comporte plusieurs valeurs (c'est à dire plusieurs lignes) à l'intérieur de la rubrique Nom. Et enfin, si on souhaite utiliser la propriété de création via lien (ce qui facilite la non création de doublons), il faudra une occurrence Table_Personne_creation reliée à chaque table comportant une rubrique Nom. Il faudra également prévoir une rubrique globale Table::nom_a_creer pour accueillir chaque nom successif, au sein de la sous-boucle destinée à isoler chaque nom s'il y en a plusieurs (et le lien sera en gros Table::nom_a_creer = Table_Personne_creation::nom avec propriété de création). Avantage de cette méthode, qui est complexe, reconnaissons-le : dès que l'enregistrement Personne est créé, on peut rapatrier son identifiant dans une rubrique Table::id_personne (puisque l'objectif est de stocker les identifiants des enregistrements Personne plutôt que les noms). Une autre méthode serait de regrouper tous les noms de toutes les tables dans un seul et même fichier Excel, d'utiliser le dédoublonnage d'Excel et d'importer le résultat dans la table Personne. Cette méthode sera plus rapide. Par contre, après, il faudra compléter les Table::id_personne, par exemple avec des Remplacer contenu rubrique utilisant une formule SQL… Qu'en penses-tu ? Jérémie
    1 point
  31. Loraga

    Rétablir enregistrement

    Mais je pars du fait qu'avec FileMaker, il y a toujours un moyen de contourner et d'arriver à ses fins (c'est un peu ça qu'on aime aussi non ? Le défi 😂) Perso, je reste sur l'idée de la double rubrique : une rubrique texte réservée à l'interface pour la saisie/modification par l'utilisateur, une autre calcul qui renvoie l'heure au bon format et qu'on utilisera uniquement côté BDD, scripts, pour les calculs de durée, etc. ça fait un peu beaucoup à gérer pour peu, mais je pense que ça peut marcher. D'ici demain si j'ai un peu de temps je vais tester ça...
    1 point
  32. J'ai le même phénomène : si une rubrique Heure a été définie par une action de script ou par une entrée automatique, en saisie, j'ai toujours des secondes en plus (comme dit précédemment). On peut contrer ça avec un menu local d'heures (je n'aime pas beaucoup, mais bon, la saisie d'une heure n'est jamais un grand plaisir).
    1 point
  33. Loraga

    Rétablir enregistrement

    Salut Matessias, Oui et je pense qu'on n’a pas le choix. C'est la même chose pour les bases de données SQL par exemple, qui attendent une heure au format HH:MM:SS. Généralement, on ignore les secondes (elles valent alors 00 par défaut), il suffit de gérer l'affichage côté modèle ainsi qu'à la saisie. C'est la même chose avec les dates : FileMaker à besoin d'une date complète pour la saisie (ex : 07/06/2021) mais on peut aisément modifier ce format à l'affichage pour une date courte comme 07/06. On peut aussi saisir une date courte et FileMaker se débrouillera tout seul pour y rajouter l'année courante, même si on ne la voit pas à l'affichage. On doit faire avec 😊 J'ai des rubriques similaires aux tiennes dans une appli de gestion d'immobilisations. L'utilisateur peut créer une feuille de prêt lorsque du matériel sort de l'agence, il doit alors saisir une date et une heure de départ et une date et une heure de retour. Pour l'heure, l'utilisateur saisit par exemple "09:30", et c'est "09h30" qui sera affiché sur le modèle. Il n'y a rien de compliqué et je ne me souviens pas avoir galéré pour mettre en place cet affichage : Côté base de donnée, rien à signaler de particulier à part que ma rubrique est de type "heure" Côté modèle, tout se fait via l'inspecteur, onglet données, j'ai choisi comme format "hhmm" et comme séparateur un simple "h". Je joins les captures mais je n'arrive pas à comprendre pourquoi FileMaker t'embête avec ce format alors que chez moi, non... Je n'ai peut-être pas bien compris ton souci, désolé d'avance si c'est le cas !
    1 point
  34. Si la rubrique est de type Heure ou bien Calcul avec un résultat de type Heure, la partie de formatage des données correspondent devrait être accessible… 🤔
    1 point
  35. Comme toujours ! L'idée est bien présente, mais le résultat ne suit pas ! Dire que j'ai passé du temps avec "Définir rubrique", convaincu que la solution est là, en passant à côté de "Valeur n°" ! Il reste un bémol : je n'arrive pas à accéder au formatage des données !
    1 point
  36. D'accord. Donc, raison de plus pour utiliser un mode particulier avec mise en mémoire des valeurs de départ. Dans le Définir rubrique de cette partie du script d'annulation, il faut spécifier la répétition visée. Définir rubrique [ laRubrique (Valeur n° : 3) ; ObtenirRépétition ( laGlobale ; 3 ) ] Il faut donc soit une boucle, soit 10 Définir rubrique de suite. Est-ce bien grave ? Les options de l'objet rubrique permettent de masquer les secondes, donc si elles acquièrent un ":00" au passage, ça peut ne pas gêner. NB : j'ai la même chose chez moi, tout Définir rubrique sur une rubrique de type heure génère un contenu XX:XX:XX, que j'arrange ensuite à l'affichage. A te lire, Jérémie
    1 point
  37. Merci aussi Magalie, C'est étrange tout de même qu'il y ait une fonction pour les modèles d'un fichier et pas d'une seule table. J'en profite avez-vous une astuce pour récupérer la liste des scripts d'un fichier ? Bon WE. Antoine
    1 point
  38. Salut Mamy, Rétablir enregistrement ne vaut que tant qu'il n'a pas été validé. Or, quand on sort d'un objet rubrique en cliquant dans du vide, cela valide l'enregistrement. FileMaker ne permet pas nativement de commencer à modifier un enregistrement puis de revenir en arrière sur des modifs portant sur plusieurs rubriques. Il faut un peut tricher pour cela… Par exemple : mettre toutes les valeurs "avant" en mémoire dans des globales et les ré-appliquer si l'utilisateur quitte le process de modification avec le bouton "Annuler". Ca t'irait ? Jérémie
    1 point
  39. Tu ajoutes ensuite d'autres éléments de modèle : > en-tête pour mettre le num de la commande, les données clients, le logo... , > récapitulatif de pied de page pour les totaux > pied de page Pour masquer une colonne, tu joues avec les conditions de masquage dans l'inspecteur Le processus sera le suivant : faire une recherche sur les données d'une commande, aller dans ce nouveau modèle et trier pour que le sous-recap apparaisse. Imprimer en pdf et joindre à l'email bien à toi, Tanguy
    1 point
  40. Merci @Jérémie Gimenez. Ceci m'interesse! Sinon, je pensais faire un export en fichier fmp, puis un import dans une table dédiée afin de l'implémenter dans les divers modèles eMail, voire directement dans la rédaction des eMails. Est-ce faisable? En vous remerciant.
    1 point
  41. Bonjour Ben, Je vais tenter d'aider aussi, et ce avec une question générale et une remarque générale. Remarque générale : quand on exporte des informations issues de différentes tables, il faut se baser (et donc baser notre modèle) sur la table de l'élément le plus petit. Par exemple, si on veut un Excel comportant des factures et des lignes de factures, il faut se baser sur les lignes de factures. NB : je dis "il faut", ce qui n'est pas une vérité absolue, disons plutôt que c'est beaucoup plus pratique à conceptualiser et que ça fournit des Excel plus faciles à exploiter ensuite. Donc, dans le cas ou certains produits peuvent apparaître soit en tant que eux-mêmes soit en tant que sous-partie d'un produit "Assortiment", il peut-être techniquement porteur d'établir la liste de tous les produits "petits", afin de les exporter. Ainsi, si le produit Bracelet est demandé 3 fois pour lui-même et 4 fois en tant que sous-produit du produit Montre, on pourra obtenir 7 lignes de ce bracelet et en tirer les totaux utiles. De même, pour faciliter la conceptualisation de l'export, il est préférable de partir d'une vue liste dans FMP (plutôt que d'une vue formulaire avec des tables externes). Si une vue liste ne permet pas de présenter ce que l'on souhaite exporter, c'est peut-être qu'à la sortie, plusieurs onglets Excel sont nécessaires. Question générale : qu'attends-tu de cet Excel ? Quel sera son usage ? Une partie de la réponse technique à développer sur FMP dépend de cela. Bonne journée, Jérémie
    1 point
  42. Apophis000

    Liste de valeurs

    Qu'appel tu superposés? Une liste de valeurs conditionnelle ? Plutôt comme ceci alors
    1 point
  43. Apophis000

    Liste de valeurs

    Bonjour De ce style ? ... alors voila
    1 point
  44. ERIC_57220

    Liste de valeurs

    Bonjour, moi aussi j’essai depuis toute la semaine a faire une liste en cascade et je n’y arrive pas. si quelqu’un a un exemple sur 3 niveau, je suis preneur pour comprendre le fonctionnement cordialement Eric
    1 point
  45. Jérémie Gimenez

    Liste de valeurs

    Salut Mamy, Ceci correspond au listes variables : les valeurs sont dans une table dédiée uniquement à cela, et par un lien, on ne consulte que les enregistrements de tel ou tel type… Si tu ne veux vraiment pas faire de table pour les valeurs possibles, tu peux aussi avoir 2 objets superposés qui s'affichent ou non selon le cas. A te lire, Jérémie
    1 point
  46. Bonjour @BenR Et bien si justement la finalité est d'envoyer le tableau en email, pourquoi ne pas l'exporter (au format xlsx) et le mettre en pièce jointe du mail ?
    1 point
  47. Merci beaucoup messieurs! Ça m'a vraiment aidé à faire avancer mon projet. Merci @Apophis000, vous m'avez donné un coup de pouce bien apprécié 👍😁 J'ai décidé de garder mes numéros de série dans l'onglet «Emplacement» puisque mon réel besoin est de géré l'emplacement de chaque chose plutôt que le numéro de série. Mais le code que vous avez revisité m'a beaucoup servi! Merci @Jérémie Gimenez, j'ai bien géré les différents status de mes exemplaires et ça fonctionne bien jusqu'à maintenant. 🤸‍♂️ Nouveau défi : Je bloque encore avec un truc probablement très simple avec lequel j'ai encore de a difficulté à saisir la façon que ça fonctionne dans FM. Ce que j'aimerais faire Je souhaite classer chaque exemplaire dans un emplacement et une section de cet emplacement. J'ai donc créé une nouvelle table emplacement et une table section ex.: Coffre 1 (emplacement) - Tiroir A (section) - Tiroir B (section) - Tiroir C (section) Coffre 2 (emplacement) - Tiroir A (section) - Tiroir B (section) ... Je ne sais pas si mes liens dans le graphe sont bons ou problématiques, s'il me manque des occurrences de table... bref, je me suis créé un petit modèle pour figurer le lien entre les sections d'un emplacement et ça fonctionne là. Mon problème se retrouve dans une table externe qui fait me permettrait d'entrer à la fois le numéro de série de l'exemplaire et son emplacement précis (2 champs à remplir). J'aimerais que lorsque je choisi le Coffre 1 dans la rubrique «Emplacement», je puisse voir dans les sections reliés à ce Coffre 1 seulement dans la rubrique «Section» Comment est-ce que je peux y arriver? Autre question Je me prépare tranquillement à me diriger vers un modèle d'inspection qui me permettra de maintenir le matériel en stock toujours en bon état avant de partir sur un chantier. J'ai donc ajouté une barre de bouton pour modifier l'état d'un exemplaire. Pour l'instant, ça fonctionne super bien. Chaque fois que je change l'état d'un exemplaire, ça me crée une nouvelle transaction, et dépendant de l'état, ça retire ou nom l'exemplaire du stock total. 💪 J'aimerais être en mesure d'afficher le (ou les) numéro(s) de série de(s) l'exemplaire(s) qui change(nt) d'état dans mon modèle transaction d'inventaire. Comment est-ce que je peux y arriver? Et une troisième... 🤓 Dans le modèle de détail du produit, ma table externe «Exemplaire» me permet d'ajouter un nouvel exemplaire, cependant lorsque je l'ajoute, il n'ajoute pas de transaction dans la table transaction.. et plusieurs petits autres trucs qui ne suivent pas lorsque je procède de cette façon. J'ai pensé ajouté un bouton d'ajout avec un script qui vient faire ce qu'il me manque, mais je me demande si, simplement avec les bons liens, je peux ajouter un exemplaire via cette table externe et que tout s'ajoute automatiquement. Ceci dit, voici le lien vers mon fichier. J'imagine que ça sera beaucoup plus facile de figurer ce dont je parle en le voyant..! https://www.dropbox.com/s/b3pe1rb0v4p7kf1/Solution MIPE.fmp12?dl=1 PS.. suis-je mieux de créer un nouveau sujet lorsque je pose une nouvelle question?
    1 point
  48. Apophis000

    FM 19 sur Ipad

    Un vpn est inutile dans un réseaux interne . De l'extérieur, vous avez besoin de votre ip ( atribué par votre provider ) et d'ouvrir les port spécifique a FM dans votre routeur. ( que fm donc ) Un connexion unique entre vous et votre maison ou bureaux . Donc pas très utile non plus.
    1 point
  49. Clem

    AppleScript calculé

    Bonjour, … pour l'hygiène mentale, le code de l'AS avec son interception d'erreur: Définir variable [ $_cmd; Valeur : Definir ( [ target = "<-- Valeur Chemin1 -->" ; destination = "<-- Valeur Chemin2 -->" ]; "set xtarget to quoted form of " & Citation ( target ) & "¶ set xdestination to quoted form of " & Citation ( destination ) & "¶ ¶ try¶ set r to do shell script \"mv\" & space & xtarget & space & xdestination¶ on error errTxt number errNum¶ beep display dialog errTxt with title \"Erreur #\" & errNum with icon stop buttons \"Ok\" default button 1¶ end try" )] ... Si le fichier d'origine doit écraser un fichier de destination existant, ajoute l'option -f à la commande mv (ex: \"mv -f\") sous peine de voir le message d'erreur se déclencher ! Cette fonction SM risque à tous les coups de ne pas fonctionner en cas de connexion à un serveur. Il faudra passer par la couche SSL ou utiliser une méthode permettant de se connecter via un socket
    1 point
  50. Il n'y a pas une autorisation à donner dans la perf système Confidentialité ?
    1 point
×
×
  • Create New...