Jump to content

ericire

Membres
  • Content Count

    5550
  • Joined

  • Last visited

  • Days Won

    53

ericire last won the day on May 9 2018

ericire had the most liked content!

2 Followers

About ericire

  • Rank
    3200
  • Birthday 12/21/1962

Profile Information

  • Gender
    Homme
  • Location
    Ales
  • Interests
    FM

FileMaker Profile

  • FM
    FMP6, ----->, FMP16A
  • OS
    Win10
  • Certification
    --Non certifié--
  • FBA
    --Non membre--

Recent Profile Visitors

30315 profile views
  1. ericire

    JSON point

    salut Une tentative de fonction personnelle récursive limitée volontairement à 5000 itérations ( à peu près 3 secondes), soit 5000 accolades ou crochets fermants dans le résultat. Pour les attributs simples au résultats booléen, nombre ou texte pas de limite. tag : _jsonGetValue /*_jsonGetValue(json;label; occ ; it1) params : json : le json à analyser label : l'attribut à extraire occ : l'occurrence du label à extraire it1 : un itérateur utile à l'extraction. Mettre 1 l'itérateur est limité volontairement à 5000, ce qui signifie qu'il ne doit pas y avoir plus de 5000 accolades ou crochets fermant(e)s dans le résultat */ Definir( [ _json = json; tag = label; occTag = Occurrences( _json; Citation( tag ) & ":" ); extfin = Extrait( _json; Position( _json; "\"" & tag & "\""; 1; occ ) + Longueur( tag ) + 4; Longueur( _json ) ); encO = Debut( extfin; 1 ); encO = Si( Filtre( encO; "{[\"" ) = ""; "[#"; encO ); extfin = Cas( encO = "[#"; Substituer( extfin; [ ","; "#]" ]; [ "}"; "#]" ]; [ ": "; "[#" ] ); extfin ); encF = Cas( encO = "{"; "}"; encO = "["; "]"; encO = "\""; "\""; "#]" ); iter = it1 + ( encF = "\"" ); deb = Si( encO = "\""; 2; 1 ); fin = Cas( encO = "\""; 2; encO = "[#"; 1; 0 ); result = Extrait( extfin; deb; Position( extfin; encF; 1; iter ) - fin ) ]; Si( iter < 5000; Si( occTag > 0 And occ <= occTag And occ > 0; Cas( encO = "\"" Or encO = "[#"; result; Occurrences( result; encO ) = Occurrences( result; encF ); result; _jsonGetValue( json; label; occ; it1 + 1 ) ); "" ); "le calcul est limité à 5000 itérations. Ceci signifie qu'il doit y avoir moins de 5000 accollades ou crochets fermant(e)s fans le résultat" ) )
  2. ericire

    JSON point

    salut effectivement le point dérange si c'est toujours le même ".tag" te reste qu'a faire un substitute avant qui substitue ton ".tag" en "tag"
  3. sur le clavier il y a la touche majuscules (shift) et la touche qui verrouille les majuscules (capslock), ces deux valeurs que tu peux intercepter par calcul avec la fonction Obtenir(TouchesSpécialesActives)
  4. comme le fait ressortir l'ami Jean-Louis une frappe uniquement en chiffre, si elle n'a pas une longueur fixe, est difficilement appréhendable par calcul car il peut y avoir plusieurs résultats possibles, chose qui n'est pas accepté par une rubrique date. donc : soit tu établis le critère d'une longueur fixe 2 + 2 + 2 ou 4 et tu utilise la fonction extrait() pour extraire chaque partie soit tu separes les jj mm aaaa par des signes préétablis ce qui permettra de "splitter" chacun des éléments avec un substituer et les recupère avec obtenirValeur soit tu crées 3 rubriques accolées accessibles par tabulation et t'a plus de probleme de distinction A la sortie tu rassemble les 3 elements avec la fonction Date ( Mois ; Jour ; Année )
  5. et l'idée de est intéressante. En fait le calcul proposé ne teste pas à proprement parler "si le clavier est déjà en mode majuscule", il travaille sur les caractères renvoyés par le clavier. Donc pour suivre ton idée, on pourrait ici effectivement tester si le caractère rentré est un chiffre ou pas avant d'effectuer le calcul. ce serait logique. pour savoir si les caractères rentrés sont des chiffres on pourrais faire ObtenirNombre (Contenu) = Longueur (Contenu) ou Contenu + 0 = Longueur (Contenu) et mettre un not (Contenu + 0 = Longueur (Contenu)) permettrais de savoir si ce n'est pas un nombre, et donc utiliser ce test avec un si avant le calcul de transformation. Ah mais au fait, tu peux aussi tester la touche majuscules avec TouchesSpécialesActives, les valeurs 1 et 2 renvoient aux shift et capslock donc avec Si ( Obtenir(TouchesSpécialesActives) ≠ 1 And Obtenir(TouchesSpécialesActives) ≠ 2 Ce principe pourrais être intéressant si tes nombres comportaient des centaines de milliers de chiffres, car peut-être le temps de calcul serait plus long que celui du test (c'est à vérifier), mais ici c'est tellement imperceptible que cela ne vaut peut-être pas le coup de se casser la tête à tester ?
  6. coucou moi aussi j'aurais dit essaie...aussi de comprendre le calcul car si tu l'avais compris tu n'aurais pas posé la question si tu es déjà en "majuscule", en théorie ce ne sont que des chiffres qui sont rentrés et en analysant le calcul le substituer ne s'occupe pas de transformer les chiffres eux-mêmes mais de remplacer des caractères par des chiffres. Et le filtre se charge de ne laisser passer plus largement que des chiffres. Il est intéressant de noter ici que pour les fonctions incluses l'une dans l'autre, malgré que le filtre apparaisse en premier à gauche (notre sens de lecture de la gauche vers la droite), le calcul va s'effectuer à partir de ta rubrique en remontant les fonctions .
  7. pour la petite histoire, le 10^n-1 c'est le calcul qui a été la base du customlist d'Agnès
  8. salut Doc voyageur le "^" c'est l'élévation à la puissance soit 10 puissance n le _n c'est une variable qui est déclarée plus haut dans le définir, le nombre de numéros dans la liste par exemple 10^2 = 100 et 10^2-1 = 99 donc n fois 9, soit deux 9 comme attendu
  9. oui j'avais vu cette spécification avant de te répondre bon courage !
  10. salut je ne vis pas en Belgique, donc je ne connais pas ce format et ne sais répondre à ta question. Sinon à quoi ressemble le contenu (séparation des champs et des lignes ?) et est-ce un fichier ouvert qui est lisible dans un éditeur de texte par exemple ? si oui tu peux essayer de l'importer dans FM et le parser avec des scripts en fonction de ces séparateurs de champs et de ligne. Mais si tu peux obtenir un fichier xml de la banque, tu pourras l'importer via la mise au point d'un fichier xslt qui se chargera de répartir les champs dans les rubriques désignées lors de l'import.
  11. salut par calcul tu peux aussi le faire : Tag perso : evaluate nombres pairs impairs Definir([ $l= SortValues (TaRubriqueDesNumérosDeRue;2);//TaRubriqueDesNumérosDeRue est au format liste $sep = ","; _filtre = "pair" ; //pair ou impair _filterC = Si ( _filtre = "pair" ; "=" ; ">" ); _n = DecompteValeurs($l) ; $it=0; _calc= "Let([$it=$it+1;val=GetValue($l;$it)];if(Mod(val;2)" & _filterC & "0;val&$sep))&" ]; if ( _n>0 and _n<401 ; Substituer (Evaluation(Substituer (10^_n-1;9;_calc)&"\"\"" ) & "#" ; [$sep & "#" ; ""] ; [ "#" ; "" ] )) ) Pour décortiquer : le Sortvalues te trie les numéros de ta rubrique, le 2 lui indique que ce sont des nombres le $sep c'est le séparateur des nombres qui seront dans le résultat le _filtre est pour indiquer le type de nombre voulus, pair ou impair le _filtreC sert à injecter l'opérateur "=" ou ">" dans le modulo qui est dans _calc, si le Mod (val)=0 c'est que ton nombre est pair et si le Mod (val)>0, c'est que le nombre est impair le _n décompte les nombres de ta rubrique le $it=0 c'est pour initialiser l'iterateur de _calc à 0 le _calc est le calcul qui va se répéter _n fois, ce calcul est une valeur texte. Les fonctions sont en anglais pour qu'il soit portable dans toute les versions. Il sera compris dans toutes les langues de FM. Le GetValue correspondant à ObtenirValeur qui sert à obtenir la nième valeur d'une liste, ici le $it qui va augmenter de 1 à chaque répétition du _calc ($it=$it+1). Et le modulo qui est dans le if (si) qui conditionne le résultat pair ou impair. A ce résultat val, on ajoute systématiquement le séparateur $sep. enfin le calcul final : if ( _n>0 and _n<401 ; Substituer (Evaluation(Substituer (10^_n-1;9;_calc)&"\"\"" ) & "#" ; [$sep & "#" ; ""] ; [ "#" ; "" ] )) Le if ou Si détermine si _n est supérieur à 0 et inférieur à 401 qui est la limite de la fonction evaluation() que tu vois un peu plus loin Le substituer sert à éliminer le "#" (au cas ou _n =1) et le $sep & "#" si _n >1, donc le dernier séparateur du calcul que l'on soumet à evaluation() ce qui est justement le but de la présence de & "#" injecté en fin de calcul le evaluation sert donc à évaluer un calcul en texte ce calcul est composé de la variable _calc qui sera répété _n fois par le biais de "Substituer (10^_n-1;9;_calc)", sachant que 10^_n-1 donnera une suite de _n 9, 9 que l'on substitue par le _calc défini plus haut. Comme le _calc se termine par "&" qui sert à concaténer tous les _calc, on rajoute à la fin du calcul évalué l'expression "\"\"" qui donnera & "" pour indiquer une valeur vide à la fin (sinon l'évaluation renverrai une erreur "?" puisque le calcul se terminerai par &) et voilà je crois que j'ai fait le tour du calcul
  12. Bonjour Noël :) Je ne sais si j'ai bien compris ton objectif... Si c'est pour mettre un lien cliquable issu d'une rubrique dans un mail ... on peut le faire grâce au format html et la balise "a" par exemple " <a href="url">sur ce lien </a> " qui dans ton cas deviendrait " <a href=""" & TarubriqueLien & """>sur ce lien </a> " PS: pour la mise en forme en html du reste du message j'utilise ObtenirCSS()
  13. Salut Eric

    J'ai tenté de te contacter il y a quelques jours mais sans succès semble-t-il.

    ce message était :

    En 2017 tu m'as bien aidé sur ce fichier, sans toi je n'en voyais pas le bout.

    J'ai à nouveau un souci sur un script de ce même fichier, et je n'arrive pas à m'en sortir.

    Pourrais-tu m'aicer, si oui je peux te faire parvenir ce fichier hélas toujours en FMP6, mais qui ne devrait pas poser de souci de version.

    En attendant, toutes mes amitiés

    Jacques

    1. ericire

      ericire

      salut Jacques

      désolé je suis très pris par ailleurs et donc guère présent sur le forum.
      La j'y suis car j'ai un besoin...
      envoie le fichier à e.plassot@laposte.net et dis moi exactement ce qu'il y a, ce que tu as essayé, ce que tu attends.
      mais pfiuuuu moi qui me plaint qu'au boulot on est encore en version 10...
       

  14. salut Pascal Ce fichier exécute un VBS (visual basic script) qui est propre à Windows. Pour mac orientes-toi vers une apple script
  15. ericire

    ericire

×
×
  • Create New...