abracadabraPDF › Forums › PDF – Général › Récupération données BDD dans un formulaire PDF. – RÉSOLU
- Ce sujet est vide.
-
CréateurSujet
-
3 octobre 2013 à 08:44 #44667DeyDeyMembre
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 !
-
CréateurSujet
-
AuteurRéponses
-
3 octobre 2013 à 11:10 #55845MerlinMaî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:3 octobre 2013 à 12:03 #55846DeyDeyMembreOutch,
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 ?3 octobre 2013 à 19:50 #55847MerlinMaître des clésS’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 ?
4 octobre 2013 à 06:23 #55848DeyDeyMembreEn 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.
4 octobre 2013 à 09:22 #55849alexParticipantBonjour à 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]
4 octobre 2013 à 09:33 #55850MerlinMaître des clésGénial !
:bravo:4 octobre 2013 à 09:41 #55851DeyDeyMembreMerci de ta réponse, j’ai enfin l’impression d’avancé .
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 ..
4 octobre 2013 à 09:49 #55852MerlinMaître des clésSinon 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]
4 octobre 2013 à 09:54 #55853DeyDeyMembreCa 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
4 octobre 2013 à 10:27 #55854alexParticipantPour 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]
4 octobre 2013 à 10:30 #55855MerlinMaître des clésAcrobat 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:4 octobre 2013 à 10:39 #55856alexParticipantBonjour 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.4 octobre 2013 à 11:08 #55857DeyDeyMembreA 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 ?4 octobre 2013 à 13:47 #55858MerlinMaître des clésFais 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:4 octobre 2013 à 13:56 #55859MerlinMaître des clésEst 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]
7 octobre 2013 à 06:29 #55860DeyDeyMembreSalut !
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 !
7 octobre 2013 à 06:51 #55861MerlinMaître des clésEt 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]
7 octobre 2013 à 07:10 #55862DeyDeyMembreMerci, 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é ?7 octobre 2013 à 08:26 #55863MerlinMaître des clésOuvre 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:7 octobre 2013 à 09:19 #55864DeyDeyMembreJe 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.
7 octobre 2013 à 09:41 #55865MerlinMaître des clésC’est le script “Remplissage fiche” qui fait tout le boulot, et qui est appelé par la liste déroulante.
7 octobre 2013 à 11:45 #55866DeyDeyMembreJe 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..)
7 octobre 2013 à 12:02 #55867DeyDeyMembreJ’ai joint mon document pour que vous puissiez vous faire une idée.
[attachment deleted by admin]
8 octobre 2013 à 09:12 #55868DeyDeyMembreUP Je suis vraiment coincé, je n’avance plus, je désespère ! :mur:
9 octobre 2013 à 07:21 #55869DeyDeyMembreRé UP ?
9 octobre 2013 à 07:52 #55870MerlinMaître des clésSalut,
Je comprend ton impatience mais cette semaine ce n’est pas possible pour moi. Pas le temps.
…A suivre…
:Smiley01:9 octobre 2013 à 08:04 #55871DeyDeyMembreSalut,
Oui je tourne en rond et la tension me monte à la tête :Euuuh:
Peut être quelqu’un d’autre aurait la solution ? :Ooops:
10 octobre 2013 à 06:09 #55872DeyDeyMembre(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 ?
11 octobre 2013 à 06:48 #55873DeyDeyMembreSalut,
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 !
11 octobre 2013 à 11:10 #55874jeffe52ParticipantBonjour 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
11 octobre 2013 à 12:52 #55875DeyDeyMembreSalut,
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.
11 octobre 2013 à 13:58 #55876jeffe52Participantje 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é.
jf13 octobre 2013 à 12:23 #55877MerlinMaître des clésDeyDey, 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:
14 octobre 2013 à 06:11 #55878DeyDeyMembreSalut,
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: )
14 octobre 2013 à 08:51 #55879DeyDeyMembreJe 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]
14 octobre 2013 à 10:21 #55880MerlinMaître des clésBen… Euh…
Ton CSV ne contient qu’une seule ligne incomplète…
:Euuuh:14 octobre 2013 à 11:13 #55881DeyDeyMembreJe l’ai changé pourtant..
Je joint une capture de ce qu’il pourrait contenir.
[attachment deleted by admin]
14 octobre 2013 à 19:16 #55882MerlinMaître des clésMoi je ne vois que ça, et apparemment ce n’est pas encodé en UTF-8…
:doute:[attachment deleted by admin]
15 octobre 2013 à 06:08 #55883DeyDeyMembreOui ç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 ).
Heelp15 octobre 2013 à 11:03 #55884DeyDeyMembreIl faut vraiment que j’avance la .. :Smiley11:
15 octobre 2013 à 11:05 #55885MerlinMaître des clésOui ç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.
15 octobre 2013 à 11:13 #55886DeyDeyMembreVoila 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]
15 octobre 2013 à 12:12 #55887MerlinMaître des clésPas 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]
15 octobre 2013 à 12:16 #55888alexParticipantBonjour à tous,
Je vous poste sur ce formulaire un exemple avec un seul fichier de données dans les heures qui viennent…15 octobre 2013 à 12:38 #55889DeyDeyMembreMerci 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 !
15 octobre 2013 à 12:54 #55890MerlinMaître des clésles champs de la liste déroulante, tu les as entrés à la main
Nonils se mettent automatiquement dans la liste ?
OuiParce que si l’administrateur souhaite ajouter une nouvelle personne dans le .csv, est ce que l’ajout sera automatique dans le formulaire ?
Oui15 octobre 2013 à 13:16 #55891DeyDeyMembreD’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.15 octobre 2013 à 13:35 #55892alexParticipantVoici 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]
15 octobre 2013 à 13:50 #55893DeyDeyMembreOooooh ca me plait beaucoup ça !!
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]
15 octobre 2013 à 14:09 #55894alexParticipantJe vais voir ça mais pas ce soir , désolé. J’ai une idée.
16 octobre 2013 à 06:05 #55895DeyDeyMembreSalut, 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]
16 octobre 2013 à 09:31 #55896DeyDeyMembreOk, 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 :'(..
16 octobre 2013 à 10:51 #55897MerlinMaître des clésSinon 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:16 octobre 2013 à 11:06 #55898DeyDeyMembreJe ne comprends toujours pas :Euuuh:
16 octobre 2013 à 11:29 #55899alexParticipantMerlin,
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.16 octobre 2013 à 12:05 #55900MerlinMaître des clésOK.
:Ooops:30 octobre 2013 à 09:22 #55901DeyDeyMembreSalut à 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]
30 octobre 2013 à 10:44 #55902V1n6aneMembreBonjour à 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
V1n6ane4 novembre 2013 à 13:11 #55903DeyDeyMembreUP
5 novembre 2013 à 10:54 #55904MerlinMaître des clésJ’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:
6 novembre 2013 à 09:34 #55905DeyDeyMembrePour 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:
6 novembre 2013 à 12:09 #55906MerlinMaître des clésPour 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:
6 novembre 2013 à 12:20 #55907DeyDeyMembrea = 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:)
6 novembre 2013 à 13:55 #55908MerlinMaître des clés1- 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.6 novembre 2013 à 14:41 #55909DeyDeyMembreOh ç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:
6 novembre 2013 à 18:43 #55910MerlinMaître des clésAlors 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:
7 novembre 2013 à 07:26 #55911DeyDeyMembreAlors 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”.
7 novembre 2013 à 09:17 #55912MerlinMaître des clésLà c’est moi qui suis largué.
Je ne comprend pas la question…
:Euuuh:7 novembre 2013 à 09:57 #55913DeyDeyMembreEt 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é.7 novembre 2013 à 10:18 #55914alexParticipantBonjour à 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]
7 novembre 2013 à 11:59 #55915MerlinMaître des clés:bravo:
7 novembre 2013 à 12:34 #55916DeyDeyMembre: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.
7 novembre 2013 à 12:48 #55917MerlinMaître des clésLe 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:7 novembre 2013 à 12:54 #55918DeyDeyMembreJe 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..
7 novembre 2013 à 13:11 #55919MerlinMaître des clésSi 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:
7 novembre 2013 à 13:46 #55920DeyDeyMembreEuuuh 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:
7 novembre 2013 à 14:52 #55921alexParticipantPour 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]
8 novembre 2013 à 07:50 #55922DeyDeyMembreY 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:8 novembre 2013 à 09:03 #55923alexParticipantNon, 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]
8 novembre 2013 à 09:19 #55924DeyDeyMembreMerci,
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]
8 novembre 2013 à 09:48 #55925MerlinMaître des clésA placer en action souris enfoncée dans le bouton concerné :
this.closeDoc();:Smiley01:
8 novembre 2013 à 11:06 #55926LionelMacBruSoftMembreBONJOUR,
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:
8 novembre 2013 à 11:20 #55927alexParticipantPour 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]
8 novembre 2013 à 11:52 #55928MerlinMaître des clésUn 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:8 novembre 2013 à 12:28 #55929DeyDeyMembreDé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]
8 novembre 2013 à 13:54 #55930MerlinMaître des clés8 novembre 2013 à 14:08 #55931DeyDeyMembreEdit du message précédent (je ne voulais pas flooder) :oh:
8 novembre 2013 à 18:12 #55932alexParticipantDans 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.9 novembre 2013 à 21:33 #55933MerlinMaître des clésMerlin, 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:12 novembre 2013 à 10:11 #55934DeyDeyMembreMerci, 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]
14 novembre 2013 à 08:46 #55935DeyDeyMembreEn 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.
14 novembre 2013 à 10:26 #55936alexParticipantLe 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 !
14 novembre 2013 à 12:10 #55937DeyDeyMembreMerci de me consacrer du temps Alex .
Je ne suis pas tout-à-fait sur de la structure du script a rajouter ? (Désolé je suis un vrai plot en Js )
15 novembre 2013 à 12:35 #55938DeyDeyMembreJ’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 ..15 novembre 2013 à 12:58 #55939MerlinMaître des clésPas de panique, au pire des cas il suffit de repartir d’une version antérieure.
:Smiley01:15 novembre 2013 à 16:48 #55940alexParticipantQuand 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.18 novembre 2013 à 07:08 #55941DeyDeyMembreSalut,
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 UpTypeError: table[event.changeEx] is undefined
20:Field:KeystrokeRien de plus..
Quand à l’exportation des données, je ne tire pas beaucoup de solution avec d’autres logiciels..
18 novembre 2013 à 08:00 #55942alexParticipantBonjour,
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]
18 novembre 2013 à 08:10 #55943DeyDeyMembreJ’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]
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.