Donnez vie à vos documents numériques !
 

Récupération données BDD dans un formulaire PDF. – RÉSOLU

abracadabraPDF Forums PDF – Général Récupération données BDD dans un formulaire PDF. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44667
    DeyDey
    Membre

    Bonjour à tous,

    Après des jours de recherches, en vain, je n’ai pas la solution de mon problème qui est le suivant :

    J’ai créé un formulaire PDF sur Adobe Acrobat Pro XI et j’aimerai pouvoir récupérer toutes les infos d’une base de données qui correspond aux champs.

    Par exemple, J’ai une liste déroulante dans mon formulaire (Nom), avec tous les noms référencés dans ma BDD; j’aimerai qu’une fois le nom choisi, les autres champs se remplisse automatiquement avec les champs qui correspondent dans la BDD.

    J’espère que vous avez compris ma question.

    Merci d’avance :) !

Affichage de 99 réponses de 1 à 99 (sur un total de 106)
  • Auteur
    Réponses
  • #55845
    Merlin
    Maître des clés

    Bonjour et bienvenue,

    C’est possible mais il faut soit un très bon niveau en JavaScript, soit faire faire.
    :idee:

    #55846
    DeyDey
    Membre

    Outch,
    Merci d’abord de ta réponse,

    Ce n’est pas possible avec un autre logiciel ? Ou peut être que je peux renseigner des données (par exemple Prénom, Tel, Adresse) directement dans mon formulaire et quand je choisi le Nom, les champs se remplissent automatiquement ?

    Et si je change de méthode:
    Je fais une interface Windows form qui récupère mes données dans la BDD, je peux faire en sorte que quand je valide, les données des champs se place au bon endroit de mon pdf ?

    #55847
    Merlin
    Maître des clés

    S’agit-il d’un formulaire qui doit être aussi complété par un humain (en plus des données importées), ou bien est-ce seulement du remplissage automatique ?

    #55848
    DeyDey
    Membre

    En fait c’est pour remplir un bordereau, en choisissant le nom de la personne, les autres champs doivent se mètrent automatiquement mais avec la possibilité de modifier certaines valeurs si elles ne conviennent pas.

    #55849
    alex
    Participant

    Bonjour à tous,
    Sur le thème des données à afficher dans un formulaire voici un petit truc que j’utilise souvent et qui consiste à embarquer les données du formulaire sous forme de pièces jointes. Dans mon exemple, j’ai autant de fichiers texte que de fiches, on peut en ajouter autant qu’on veut. Mon formulaire comporte 3 champs à remplir (champs “Champ.0″,”Champ.1″,”Champ.2”), on peut là aussi en ajouter autant qu’on veut (paramètre NbreChamps à modifier dans le script importDatas().
    Le premier script importDatas liste les pièces jointes, remplit la liste déroulante et et collecte les données pour les stocker dans une table.
    Le second script remplit la fiche à partir de l’item sélectionné.
    Voir maquette.
    Nombreuses variantes possibles:
    pièces jointes XML avec noms des champs.
    pièce jointe unique.
    données externes.
    remplissage du menu déroulant à l’ouverture.
    etc…

    [attachment deleted by admin]

    #55850
    Merlin
    Maître des clés

    Génial !
    :bravo:

    #55851
    DeyDey
    Membre

    Merci de ta réponse, j’ai enfin l’impression d’avancé :D.

    Je pense que cette méthode conviendrait, je vais essayé de gratter un peu en Js même si ce n’est pas forcement ma sauce ..
    Peux-tu me détaillé un peu plus la méthode à utiliser pour faire cela, je ne suis pas sur d’avoir bien tout compris.

    Aussi, comment accédé aux script ? Je vois uniquement le nom dans les options ..

    #55852
    Merlin
    Maître des clés

    Sinon j’ai ça (ci-joint).

    C’est le même principe mais ça fonctionne avec un seul fichier incorporé, c’est un fichier CSV séparé par des tabulations.
    :idee:

    [attachment deleted by admin]

    #55853
    DeyDey
    Membre

    Ca peut être une bonne méthode aussi, il serait possible de modifier des données sur le fichier CSV sans passé par Acrobat (Sur un PC autre que le créateur) ?
    Quelle est la config du fichier CSV ?

    Merci

    #55854
    alex
    Participant

    Pour traiter les fichiers .csv, il faut considérer le “;” comme caractère séparateur (voir exemple ci-joint script importDatas() ). On peut là aussi modifier ces fichiers directement sous Acrobat PRO.
    Ouvrir le fichier csv pour voir sa structure …

    [attachment deleted by admin]

    #55855
    Merlin
    Maître des clés

    Acrobat ne peut pas modifier un fichier TXT ou CSV, il faut le préparer par ailleurs.
    Pour l’export en CSV je préfère LibreOffice à Excel car les options d’exportation sont plus complètes.
    De mémoire, il vaut mieux utiliser l’encodage UTF-8 qui assure un affichage cohérent des caractères accentués indépendamment des plateformes. C’est tout.
    :Smiley01:

    #55856
    alex
    Participant

    Bonjour Merlin,
    Fais un essai sur ce formulaire…
    Si tu ouvres une pièce  jointe dans Acrobat (par exemple Dupont.csv) tu constaters que tu peux la modifier sous Excel, et elle sera mise à jour !
    Oui, il faut faire attention à l’encodage pour les accents.
    Dans mon exemple, j’ai mélangé volontairement des csv et des txt.

    #55857
    DeyDey
    Membre

    A vrai dire je suis un peu perdu..
    Je ne sais pas trop comment procéder pour obtenir un tel résultat.

    Est ce possible de tout mettre dans le même fichier CSV?
    Et comment se fait le lien avec les pièces jointes ?

    #55858
    Merlin
    Maître des clés

    Fais un essai sur ce formulaire…
    Si tu ouvres une pièce  jointe dans Acrobat (par exemple Dupont.csv) tu constaters que tu peux la modifier sous Excel, et elle sera mise à jour !

    Oui, bien sur. Je pensais à la partie création du CSV.
    :Smiley03:

    #55859
    Merlin
    Maître des clés

    Est ce possible de tout mettre dans le même fichier CSV?
    Et comment se fait le lien avec les pièces jointes ?

    Dans mon exemple la correspondance entre les noms de champs et les colonnes est faite par JavaScript à l’ouverture du document.
    Dans l’exemple il y en a 3 mais on peut augmenter le nombre des colonnes et des champs correspondants.
    Peu importe le nom du fichier de donnés et son suffixe (TXT ou CSV), par-contre le script employé requiert qu’il n’y ait pas d’autre pièces jointes dans le PDF.

    Par-contre je viens de m’apercevoir que j’avais posté un fichier verrouillé, ci-joint un autre.

    [attachment deleted by admin]

    #55860
    DeyDey
    Membre

    Salut !
    Je ne comprends toujours pas bien, où ce trouve les script ?
    Et dans ton exemple, les champs ne sont pas modifiables manuellement.

    Merci de vous penchez sur ma question, ça m’aide beaucoup :) !

    #55861
    Merlin
    Maître des clés

    Et dans ton exemple, les champs ne sont pas modifiables manuellement.

    Je cite mon dernier message (ci-dessus) : “Par-contre je viens de m’apercevoir que j’avais posté un fichier verrouillé, ci-joint un autre.”

    Je ne comprends toujours pas bien, où ce trouvent les scripts ?

    Capture jointe.

    [attachment deleted by admin]

    #55862
    DeyDey
    Membre

    Merci, autant pour moi :)

    Je ne comprends pas, dans l’exemple d’alex, le script “remplissageFiche” ?
    Le bouton ‘importer” efface les champs, peut être que c’est un pb de mon coté ?

    #55863
    Merlin
    Maître des clés

    Ouvre la Console (ctrl/cmd + J) avant de cliquer sur “Importer” : ça réinitialise la liste des pièces jointes et ça réinitilise les champs.
    C’est la liste déroulante qui doit remplir les champs.

    C’est une maquette, dans un “vrai” document il ne devrait pas y avoir le bouton “Importer” et l’initialisation se ferait automatiquement à l’ouverture du document.
    :idee:

    #55864
    DeyDey
    Membre

    Je comprends mieux l’intérêt du bouton, merci :)

    Par contre j’essaye de gratter le script et je n’arrive pas à comprendre où il fait appel aux bon fichiers et quel champ correspond à tel cellule.

    #55865
    Merlin
    Maître des clés

    C’est le script “Remplissage fiche” qui fait tout le boulot, et qui est appelé par la liste déroulante.

    #55866
    DeyDey
    Membre

    Je dois être vraiment mauvais en JS..
    Le truc c’est que j’ai beaucoup de champs à remplir avec plusieurs listes déroulantes, et je n’arrives pas à comprendre la script..

    Il faut que je puisse récupérer plusieurs données venant du même fichier .csv.
    Ou est-ce que l’on défini le nom des champs dans les code ?

    (c’est un peu compliqué à expliquer, et je commence à me dire que c’est peut-être pas de mon niveau..)

    #55867
    DeyDey
    Membre

    J’ai joint mon document pour que vous puissiez vous faire une idée.

    [attachment deleted by admin]

    #55868
    DeyDey
    Membre

    UP Je suis vraiment coincé, je n’avance plus, je désespère  ! :mur:

    #55869
    DeyDey
    Membre

    Ré UP ?

    #55870
    Merlin
    Maître des clés

    Salut,

    Je comprend ton impatience mais cette semaine ce n’est pas possible pour moi. Pas le temps.
    …A suivre…
    :Smiley01:

    #55871
    DeyDey
    Membre

    Salut,

    Oui je tourne en rond et la tension me monte à la tête :Euuuh:

    Peut être quelqu’un d’autre aurait la solution ? :Ooops:

    #55872
    DeyDey
    Membre

    (Je suis toujours bloqué, si jamais ..)  :mur:

    Juste une petite question Merlin, est ce qu’il y aurait un moyen pour avoir toutes les données dans le même fichier .csv ? plutôt que d’en créer un par nom ?

    #55873
    DeyDey
    Membre

    Salut,

    En fait mon souci actuel est de lister une colonne (Nom) au lieu de lister les pièces jointes, puisque mon but final est de tout mettre dans le même fichier .csv

    Si quelqu’un à la solution du code Js, je suis preneur puisque ça fait plusieurs jours que je galère à chercher ..

    (Désolé du “flood” :S)

    Merci d’avance :)!

    #55874
    jeffe52
    Participant

    Bonjour le forum, DeyDey, Merlin, Alex

    Je viens d’essayer l’exemple fourni par Merlin,(le non protégé) cela fonctionne aussi avec un .csv
    Seule contrainte, respecter l’encodage UTF8 et d’utiliser pour cela libreoffice comme il l’indique.

    jf

    #55875
    DeyDey
    Membre

    Salut,
    merci de ta réponse.

    Oui cela fonctionne mais j’aimerai pouvoir lister les noms d’une colonne d’un seul et même fichier .csv au lieu d’avoir une pièces jointe par nom.

    #55876
    jeffe52
    Participant

    je n’ai pas trop le temps, je comprends pas bien, j’ai réussi à créer un csv ou j’ai 3 colonnes, et une centaine de ligne, qui respecte les contraintes listées. et lorseque je remplace le fichier txt de merlin prend en compte mes infos :doute:
    essaie de joindre un petit bout de fiche csv correctement formaté.
    jf

    #55877
    Merlin
    Maître des clés

    DeyDey, je crois que tu te mélanges les pinceaux.
    L’exemple d’Alex utilise un fichier txt par entrée/rangée, le mien utilise un seul fichier CSV pour toutes les entrées.

    :idee:

    #55878
    DeyDey
    Membre

    Salut,
    Oui je ne comprends pas bien x).

    Dans l’exemple d’Alex, il y a bien un fichier par nom, je voudrais tout réunir dans le même fichier mais quelle sont les modifications à apporter au script pour lister une colonne d’un fichier .csv plutôt que de lister tous les fichier (pièces jointes) ?

    Et je ne comprend pas le script de ton exemple Merlin ..

    (J’espère être compris  :priere: )

    #55879
    DeyDey
    Membre

    Je joint le fichier .pdf (avec le .csv en pièce jointe) et une capture d’écran des champs qui devraient être remplis.

    [attachment deleted by admin]

    #55880
    Merlin
    Maître des clés

    Ben… Euh…
    Ton CSV ne contient qu’une seule ligne incomplète…
    :Euuuh:

    #55881
    DeyDey
    Membre

    Je l’ai changé pourtant..

    Je joint une capture de ce qu’il pourrait contenir.

    [attachment deleted by admin]

    #55882
    Merlin
    Maître des clés

    Moi je ne vois que ça, et apparemment ce n’est pas encodé en UTF-8…
    :doute:

    [attachment deleted by admin]

    #55883
    DeyDey
    Membre

    Oui ça n’a pas enregistrer.
    Comment encoder en UTF-8 ?
    Le truc serait d’adapter ton exemple Merlin à mon problème, ce que je ne parviens pas à faire.  :mur:

    Je n’arrive pas à faire en sorte que ma liste déroulante, me liste tous les noms d’un même fichier et me remplisse les champs “Adresse”, “Tél”, “Fax”, “Mail”, etc automatiquement.

    Je pense qu’il me faudrait juste une fonction Javascript qui, au lieu de me lister les pièces jointes, me liste une colonne d’une pièce jointe imposée.

    Ca fait plus de deux semaines que je suis dessus et mon maître de stage commence à s’impatienter. (Moi je pette un câble :/ ).
    Heelp :(

    #55884
    DeyDey
    Membre

    Il faut vraiment que j’avance la ..  :Smiley11:

    #55885
    Merlin
    Maître des clés

    Oui ça n’a pas enregistrer.

    Et bien recommence et poste cette fichue liste…
    :oh:

    Comment encoder en UTF-8 ?

    Relis mes messages précédents, mais ce n’est pas le plus important pour le moment.

    #55886
    DeyDey
    Membre

    Voila ca devrait être bon mais il n’y à rien d’exceptionnel, juste la liste que j’ai posté en screenshot, pour l’exemple.

    [attachment deleted by admin]

    #55887
    Merlin
    Maître des clés

    Pas besoin que ce soit exceptionnel, juste utilisable.
    Parce-que je veux bien prendre sur mon temps pour aider, mais pas pour saisir des listes d’exemples.
    :geek:

    Ci-joint.
    :bonjour:

    [attachment deleted by admin]

    #55888
    alex
    Participant

    Bonjour à tous,
    Je vous poste sur ce formulaire un exemple avec un seul fichier de données dans les heures qui viennent…

    #55889
    DeyDey
    Membre

    Merci de me consacrer de ton temps Merlin :) !

    Ce que tu m’a donné me conviens, c’est ce que je cherchais, merci!  :extra:

    Petite question cependant, les champs de la liste déroulante, tu l’es as entré à la main ou ils se mettent automatiquement dans la liste ? Parce que si l’administrateur souhaite ajouter une nouvelle personne dans le .csv, est ce que l’ajout sera automatique dans le formulaire ? :)

    Alex: Je suis toujours preneur de ta solution :D !

    #55890
    Merlin
    Maître des clés

    les champs de la liste déroulante, tu les as entrés à la main
    Non

    ils se mettent automatiquement dans la liste ?
    Oui

    Parce que si l’administrateur souhaite ajouter une nouvelle personne dans le .csv, est ce que l’ajout sera automatique dans le formulaire ?
    Oui

    #55891
    DeyDey
    Membre

    D’accord, merci.

    Je viens de voir, le format du .csv, tout est regroupé dans la colonne A, est ce normal ?
    Ce n’est pas très clair pour l’administrateur je trouve.

    #55892
    alex
    Participant

    Voici l’exemple promis.
    Le fichier de données est unique. Pour voir sa structure, utilisez un simple éditeur de texte. Vous remarquerez que toutes les valeurs se suivent séparées par des point-virgules.
    Lors de l’ouverture du document, un script (importDatas()) lit la première colonne et renseigne le menu déroulant.
    Lors de l’action sur le menu déroulant le script remplissageFiche() lit les autres valeurs et remplit les champs Champ.1 et suivants (jusqu’à Champ.7 dans mon exemple)

    On peut aussi faire ça  avec un fichier de données xml, ou du fdf.

    Voyez si ça vous suffit.

    [attachment deleted by admin]

    #55893
    DeyDey
    Membre

    Oooooh ca me plait beaucoup ça :D !!
    Merci  :extra:

    (Normal qu’une fois le “Nom” sélectionné dans la liste, le reste s’affiche mais la liste est vide ?

    Ci-joint une capture.

    [attachment deleted by admin]

    #55894
    alex
    Participant

    Je vais voir ça mais pas ce soir , désolé. J’ai une idée.

    #55895
    DeyDey
    Membre

    Salut, d’accord merci, je vais commencer à remplir mon formulaire.

    Est-il juste possible de séparer mes différents “blocs” (ex: “1.Emetteur du bordereau, 2.Installation de destination..), en plusieurs Feuilles Excel ?
    Faire une feuille par bloc pour que l’administrateur puisse gérer le .csv plus facilement ?  :Smiley00:
    Puisque le but serait de faire ce système sur tous les champs.

    (Euuuh.. What ?! Je viens de voir ça x), fichier joint).

    [attachment deleted by admin]

    #55896
    DeyDey
    Membre

    Ok, je viens de voir que les fichiers .csv ne prennent pas en charge plusieurs feuilles –‘ ..

    Je peux utiliser un autre format ou je me pend tout de suite ? :oh:

    Sinon je fais tout propre sur une seule feuille mais vu que je ne sais pas comment se configure l’appel des cellules en Js je ne peux rien faire :'(..

    #55897
    Merlin
    Maître des clés

    Sinon je fais tout propre sur une seule feuille mais vu que je ne sais pas comment se configure l’appel des cellules en Js je ne peux rien faire

    Je l’ai déjà dit dans un message précédent : l’en-tête de colonnes doit correspondre au nom du champ hôte.
    Ouvre les exemples fournis pour t’en convaincre.

    :bonjour:

    #55898
    DeyDey
    Membre

    Je ne comprends toujours pas  :Euuuh:

    #55899
    alex
    Participant

    Merlin,
    Ce n’est pas vrai dans mon exemple. Les en-têtes sont bien présentes dans le fichier de données BSD.csv mais je ne les utilise pas comme on le ferait avec du fdf ou du xml.
    Les champs du formulaire sont nommés Champ.1 à Champ.x dans l’ordre des colonnes, rien de plus.
    Cela dit, on pourrait les prendre en compte pour aider notre ami qui pourrait alors nommer ses champs de formulaire à l’identique des têtes de colonne.

    #55900
    Merlin
    Maître des clés

    OK.
    :Ooops:

    #55901
    DeyDey
    Membre

    Salut à tous !

    J’ai bien avancé depuis la dernière fois (je remercie Alex!).
    Cependant, je bute sur un problème assez conséquent:
     
      J’aimerai faire correspondre le N°CAP selon le Nom (du bloc 2) et la rubrique déchet (du bloc 3). Par exemple il peut y avoir la même personne pour plusieurs rubrique déchet et inversement. Le numéro de CAP reste unique et je souhaite qu’il se génère automatiquement selon ces 2 données.

      J’aimerai aussi pouvoir générer automatiquement le numéro de bordereau unique (s’il n’est pas référencé dans la base exportée que je vais créer plus tard).

    Voilà j’espère que vous m’aurez compris et que l’on puisse aboutir à une solution.

    Merci d’avance,
    Cdlt,
    DeyDey.

    P.S: Ci joint le formulaire.

    [attachment deleted by admin]

    #55902
    V1n6ane
    Membre

    Bonjour à tous,

    Merci et surtout bravo :bravo: pour ces supers exemples ! C’est exactement cela qu’il me faut.

    Malheureusement pour moi j’utilise LiveCycle Designer (tableaux dynamiques oblige) et je dois donc transposer ce code et pour le moment je n’ai pas trouvé/réussi. Auriez-vous des pistes ?

    Si j’y arrive (ce que j’espère), je le posterai, cela aidera peut-être d’autres personnes.

    Merci d’avance
    V1n6ane

    #55903
    DeyDey
    Membre

    UP

    #55904
    Merlin
    Maître des clés

    J’aimerai faire correspondre le N°CAP selon le Nom (du bloc 2) et la rubrique déchet (du bloc 3). Par exemple il peut y avoir la même personne pour plusieurs rubrique déchet et inversement. Le numéro de CAP reste unique et je souhaite qu’il se génère automatiquement selon ces 2 données.

    Oui, mais il faudrait savoir sur quel critère ce numéro devrait être créé.

    J’aimerai aussi pouvoir générer automatiquement le numéro de bordereau unique (s’il n’est pas référencé dans la base exportée que je vais créer plus tard).

    Le script contenu dans cet utilitaire pourrait il faire l’affaire ?
    ==> http://abracadabrapdf.net/utilitaires/acrobat-plugins/abracadabra-docid/

    :Smiley01:

    #55905
    DeyDey
    Membre

    Pour le numéro de CAP, une personne peut avoir plusieurs numéro de CAP et un déchets peut aussi avoir plusieurs numéros de CAP.
    Ce dernier doit être unique pour un déchet et une personne.

    Pour ce qui est du numéro du bordereau, la première partie du numéro est la date (ddmmyyyy) suivie de 01, 02 ou 03 etc.. selon le nombre de bordereau par jour; par exemple:

    Si on envoi 3 documents le 05 Novembre, les numéros des documents seront:  20131105 01 // 20131105 02 // 20131105 03
    Si on envoi d’autres documents le lendemain, les numéros des documents reprendrons à “01” mais avec la date du jour: 20131106 01 // 20131106 02 // 20131106 03 etc.

    J’ai déjà le script pour la date:

    Code:
    if (this.getField(“01_Num_Bordereau”).value == “”)
        {
          this.getField(“01_Num_Bordereau”).value = util.printd(“yyyymmdd”, new Date()) ;
        }

    En fait il faut: Tant que la date n’a pas changé, faire Valeur++

    J’espère avoir été clair  :Ooops:

    #55906
    Merlin
    Maître des clés

    Pour le numéro de CAP, une personne peut avoir plusieurs numéro de CAP et un déchets peut aussi avoir plusieurs numéros de CAP.
    Ce dernier doit être unique pour un déchet et une personne.

    a = this.getField(“CAP-NOM”).value;
    b = this.getField(“CAP-NUMERO”).value;
    event.target.value = a + b;

    :Smiley01:

    #55907
    DeyDey
    Membre

    a = this.getField(“CAP-NOM”).value;
    b = this.getField(“CAP-NUMERO”).value;
    event.target.value = a + b;

    Il y a un moyen pour faire correspondre avec mes fichiers .csv et mes champs ?  :Ooops: (J’suis un peu paumé  :oh:)

    #55908
    Merlin
    Maître des clés

    1- les champs sont remplis via le menu déroulant.
    2- le script placé en script de calcul dans le champ CAP-final va récupérer les valeurs dans les 2 champs concernés et concaténer leurs valeurs pour les afficher.

    #55909
    DeyDey
    Membre

    Oh ça marche.  :extra:

    Part contre, il me sort l’addition des rangs (un moyen les renseigner les numéros de CAP quelque part ?)

    Et pour le script du champ, pas moyen de le mettre ailleurs que “champ activé” ou autre ?

    Merci.  :priere:

    #55910
    Merlin
    Maître des clés

    Alors essaye plutôt ça :

    a = this.getField(“CAP-NOM”).valueAsString;
    b = this.getField(“CAP-NUMERO”).valueAsString;
    event.target.value  = a + b;

    A placer en script de calcul (dans l’onglet Calcul)

    :Smiley03:

    #55911
    DeyDey
    Membre

    Alors la il m’affiche le rang “CAP_NOM” puis le rang “CAP_NUMERO” à la suite et toujours quand j’active le champ.

    Il faudrait que le “CAP_FINAL” soit stocké et relatif à “CAP_NOM” et “CAP_NUMERO”.

    #55912
    Merlin
    Maître des clés

    Là c’est moi qui suis largué.
    Je ne comprend pas la question…
    :Euuuh:

    #55913
    DeyDey
    Membre

    Et bien le numéro de CAP doit être unique suivant le nom et le déchet.
    Les numéros de CAP doivent être renseignés quelques part (ou générés selon un modèle) mais pas calculés.
    C’est assez difficile à expliquer, désolé.

    #55914
    alex
    Participant

    Bonjour à tous,
    Pour concaténer le contenu de deux champs dans un troisième, voir exemples joints.
    Pour incrémenter automatiquement un numéro de bordereau genre 20131105-01,20131105-02,20131105-03,20131105-04… c’est une autre affaire.

    [attachment deleted by admin]

    #55915
    Merlin
    Maître des clés

    :bravo:

    #55916
    DeyDey
    Membre

    :bravo:

    Pour la date, j’ai ça si ça peut intéresser quelqu’un :

    Code:
    var compteur = 1;
    var ancienJour = new Date().getDate()

    if (this.getField(“01_Num_Bordereau”).value == “”)
    {
        if(ancienJour != new Date().getDate())
            compteur = 1;

        ancienJour = new Date().getDate();

        this.getField(“01_Num_Bordereau”).value = util.printd(“yyyymmdd”, new Date()) + ” ” + compteur ;
        compteur++;
    }

    Le problème c’est que le numéro ne s’incrémente pas puisque le compteur est réinitialiser; il faudrait un moyen pour stocker la date.

    #55917
    Merlin
    Maître des clés

    Le problème c’est que le numéro ne s’incrémente pas puisque le compteur est réinitialiser; il faudrait un moyen pour stocker la date.

    ???
    :Euuuh: :doute:

    #55918
    DeyDey
    Membre

    Je voulais que pour chaque nouveau bordereau de la journée le numéro soit la date + 01, 02, ou 03 etc selon si on fait un ou plusieurs bordereaux par jour.

    Mais à chaque fermeture, le numéro est réinitialisé puisque il est stocké en local. Donc à moins de laisser le bordereau constamment ouvert ou d’enregistrer le numéro sur un serveur, ce n’est pas possible..

    #55919
    Merlin
    Maître des clés

    Si c’est possible, il y a 2 méthodes :

    – utiliser une variable globale (qui persiste entre documents et entre sessions du logiciel), mais depuis les versions X il y a beaucoup plus de restrictions dans leur fonctionnement.
    – stocker la valeur dans un champ placé dans un autre PDF (qui ne sert qu’à ça), donc assez facile à lire et à modifier javascriptement.

    :Smiley01:

    #55920
    DeyDey
    Membre

    Euuuh Whaaat ?!
    Je crois que je vais laisser tomber, j’ai beaucoup d’autres choses à avancer (notamment l’exportation dans une base structurée –‘) et mon maître de stage va s’impatienter..

    :mur:

    #55921
    alex
    Participant

    Pour illustrer la première proposition de Merlin voici un exemple qui exploite la variable globale mémorisée sur la plate-forme où l’on travaille. Il y a donc quelques contraintes d’exploitation à connaître.
    Attention: deux scripts sont à l’oeuvre! Le premier est activé par l’ouverture du document, l’autre par l’action d’enregistrement[ (Définir les actions du document>Le document sera enregistré./color]

    [attachment deleted by admin]

    #55922
    DeyDey
    Membre

    Y a t-il un moyen de mettre la fonction sur un bouton ? (pour tester)
    Et j’ai bien recopié les 2 scripts, mais rien ne s’affiche dans mon champ.  :mur:

    #55923
    alex
    Participant

    Non, on ne doit pas simuler par un bouton puisque les évènements qui gèrent les scripts sont:
    1-l’ouverture du document pour le calcul du nouvel identifiant.
    2-la fermeture du document pour l’enregistrement de la variable locale.
    Ci-joint un document qui ouvre la console à l’issue de la numérotation, recopier le contenu pour que l’on puisse analyser l’erreur éventuelle.
    Pour tester:Ouvrir, enregistrer, réouvrir,enregistrer, etc…

    [attachment deleted by admin]

    #55924
    DeyDey
    Membre

    Merci,

    Mon maître de stage vient de m’apprendre qu’il peut être amené, par exemple, à faire 7 ou 8 bordereaux d’affilés et recommencer l’après-midi, par exemple.

    Peut-être que l’on ajouter une fonction qui, quand on valide le formulaire pour exporter/imprimer, automatise uniquement la fermeture du bordereau (pas du logiciel).

    Est-ce possible ?

    Ci joint, le dernier document à jour.

    [attachment deleted by admin]

    #55925
    Merlin
    Maître des clés

    A placer en action souris enfoncée dans le bouton concerné :
    this.closeDoc();

    :Smiley01:

    #55926

    BONJOUR,

    Merci,

    Et par hasard, s’il existe un script qui envoi les données du formulaire, dans un tableau structuré (Excel, access ou autre) ?

    Et est-il possible que ce bouton demande d’enregistrer, d’imprimer et d’exporter ?

    Un moment donné, quand on abord un autre point : il faut savoir créer un nouveau sujet (avec un titre adéquat).  :Smiley01:

    Merci à vous.

    Lionel :alien2:

    #55927
    alex
    Participant

    Pour poursuivre le débat sur la numérotation automatique d’un document, voici une maquette où deux boutons assurent:
    1-la numérotation automatique.
    2-la fermeture du formulaire avec, en cas d’enregistrement, la mémorisation du dernier numéro.
    Pour raffiner, on pourrait rendre invisible le champ “Attribuer un numéro” et le champ “Valider le bordereau” visible après attribution du numéro.
    Attention de bien recopier les scripts de document.

    En ce qui concerne l’export des données, c’est l’objet d’un fil différend, je suis bien d’accord.

    [attachment deleted by admin]

    #55928
    Merlin
    Maître des clés

    Un moment donné, quand on aborde un autre point : il faut savoir créer un nouveau sujet (avec un titre adéquat).

    C’est fait : http://abracadabrapdf.net/forum/index.php/topic,2268.0.html
    :bonjour:

    #55929
    DeyDey
    Membre

    Désolé pour le mauvais post.
    Merci Merlin de l’avoir déplacé au bon endroit, et merci Alex pour ton aide :) !

    J’ai recopié tous les script au bon endroit et dans mon champ, il s’affiche “xxxxx”, je n’ai aucune idée pourquoi.

    Ouaaa et je viens d’avoir un gros souci la.. (Je suis désolé  :Ooops:)
    Pour le numéro de CAP, en fait je doit choisir un “Nom (case2)”, la “rubrique déchet (case3)” et qu’il me propose une liste déroulante pour le numéro de CAP (case2) qui correspond au “Nom” et à la “Rubrique déchet”.

    Je joint le BSD avec un .csv type comme exemple qui pourrait être donné (02_CAP.csv)

    [attachment deleted by admin]

    #55930
    Merlin
    Maître des clés
    #55931
    DeyDey
    Membre

    Edit du message précédent (je ne voulais pas flooder)  :oh:

    #55932
    alex
    Participant

    Dans ton formulaire manque le script lié à l’enregistrement du document:
    Outils>Définir les actions du document>Le document sera enregistré…
    Pour le reste, je n’ai rien compris. le contenu d’un menu déroulant dépend du choix effectué sur un autre ???
    Merlin, on pourrait ouvrir un fil sur ce seul thème de la numérotation automatique, je vous proposerai une solution plus raffinée que vous pourrez tester.
    Bonsoir à tous et bon week-end.

    #55933
    Merlin
    Maître des clés

    Merlin, on pourrait ouvrir un fil sur ce seul thème de la numérotation automatique, je vous proposerai une solution plus raffinée que vous pourrez tester.

    C’est fait : http://abracadabrapdf.net/forum/index.php/topic,2270.new.html
    :Smiley03:

    #55934
    DeyDey
    Membre

    Merci, le numéro automatique fonctionne.
    Pour le numéro de CAP je vais essayer d’être plus clair:

    Le « 02_CAP » doit dépendre de « 02_Installation_de_destination » et « 03_Rubrique ». C’est-à-dire que si je sélectionne tel «Nom » et tel « Déchet », la liste des numéros de CAP doit me proposer que les numéros qui sont associés au nom et au déchet.
    J’ai fait un .csv exemple (02_CAP.csv) des possibilités.

    Ci-joint le dernier document a jour.

    [attachment deleted by admin]

    #55935
    DeyDey
    Membre

    En fait c’est des listes déroulantes liées mais avec des données extérieures (pièces jointes) et non encrées directement dans le code.

    #55936
    alex
    Participant

    Le menu déroulant “02_CAP” ne peut plus être renseigné à l’ouverture du document puisqu’il dépend de deux autres sélections. En conséquence, on ne doit pas voir apparaître le script configComBox() dans le script xinitialisation(). Par précaution, on vide le menu déroulant “02_CAP”.d’où, les lignes suivantes:

    nomFichier=”02_CAP.csv”;
    lectureCSV();
    data02_CAP=data;
    configComboBox();
    this.getField(“02_CAP.csv”).clearItems();

    Par contre, on doit créer deux scripts au niveau des menus déroulants « 02_Installation_de_destination » et « 03_Rubrique ». pour mettre à jour le menu “02_CAP.csv”,
    Onglet Format>Personnalisé>Script de touche personnalisé
    1-pour « 02_Installation_de_destination », un script de la forme:

    //Remplissage du menu déroulant
    if(!event.willCommit)
    {
    table=new Array() ;
    choix1=this.event.changeEx;
    choix2=this.getField(“03_Rubrique”).value;
    //définition de la table à partir des choix1 et choix2 (la table “dépend de”)
    //……………script à écrire………………….
    //
    f2=this.getField(“02_CAP”);
    f2.delay=true;
    f2.clearItems();
    j=0;
    while(j {
    f2.insertItemAt(table[j],j,j)
    j=j+1;
    }
    f2.currentValueIndices=0;
    f2.delay=false;
    }

    2-pour « 02_Installation_de_destination », un script de la forme:
    //Remplissage du menu déroulant
    if(!event.willCommit)
    {
    table=new Array() ;
    choix1=this.getField(“02_Installation_de_destination”).value;
    choix2=this.event.changeEx;
    //définition de la table à partir de choix1 et choix2. (la table “dépend de”)
    //……………script à écrire………………….
    //
    f2=this.getField(“02_CAP”);
    f2.delay=true;
    f2.clearItems();
    j=0;
    while(j {
    f2.insertItemAt(table[j],j,j)
    j=j+1;
    }
    f2.currentValueIndices=0;
    f2.delay=false;
    }

    Hélas, je ne peux pas définir les tables des items car je ne suis pas une voyante extra-lucide ni un enchanteur  !

    #55937
    DeyDey
    Membre

    Merci de me consacrer du temps Alex :D.

    Je ne suis pas tout-à-fait sur de la structure du script a rajouter ? (Désolé je suis un vrai plot en Js :/)

    #55938
    DeyDey
    Membre

    J’ai des erreurs qui viennent d’apparaître comme par magie.
    Des erreurs de protection, plus aucun champs ne marche, la numérotation auto ne marche plus.
    Je ne vois pas ce que j’ai modifier pour que cela arrive.
    Je commence vraiment à désespérer :( .. 

    #55939
    Merlin
    Maître des clés

    Pas de panique, au pire des cas il suffit de repartir d’une version antérieure.
    :Smiley01:

    #55940
    alex
    Participant

    Quand plus rien ne marche, c’est que le diagnostique est aisé (en général). Ouvrir la console avec un Ctrl-J (sur Pc) ou un cmd-J (sur Mac), mes scripts sont assez bavards, on devrait avoir une piste…
    Bon week-end à tous.

    #55941
    DeyDey
    Membre

    Salut,
    Pour les erreurs, voici ce qu’indique la console:

    Code:
    NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
    Global.dernNum:7:Field Num:Mouse Up

    TypeError: table[event.changeEx] is undefined
    20:Field:Keystroke

    Rien de plus..

    Quand à l’exportation des données, je ne tire pas beaucoup de solution avec d’autres logiciels..

    #55942
    alex
    Participant

    Bonjour,
    Tout d’abord donnes-nous quelques précisions.
    Quelle application (Acrobat ou Acrobat Reader) et quelle version ? Système d’exploitation  (Windows Xp ?) pour cette recopie de la console ?
    Ensuite, vérifies le réglage des préférences d’Adobes Reader et refais un essai. (voir copie d’écran jointe).
    A suivre.

    [attachment deleted by admin]

    #55943
    DeyDey
    Membre

    J’utilise Acrobat Pro XI sur Windows 8.
    Le logiciel sera sur windows XP lu avec un vieux Adobe Reader.

    J’ai fais la modification que tu m’as donné, ça fonctionne pour le numéro du bordereau.
    Par contre, le remplissage des champs ne fonctionne toujours pas.

    Je joint le fichier en date.

    [attachment deleted by admin]

Affichage de 99 réponses de 1 à 99 (sur un total de 106)
  • Vous devez être connecté pour répondre à ce sujet.