Erenion
Messages postés3Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention21 juillet 2005
-
20 juil. 2005 à 20:03
Erenion
Messages postés3Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention21 juillet 2005
-
21 juil. 2005 à 20:17
Bonjour à tous
Je vous expose brièvement ce que je souhaite faire :
J'ai crée un template RTF, qui contient des champs (bookmarks) que je
fusionne avec des valeurs se trouvant dans une base de données.
Par exemple : dans le fichier RTF j'ai "NOM"
Ma requete en base de données me ramenne la Valeur DUPOND
Apres fusion Mon document RTF, se compose Alors d'une page ou "NOM" est remplacé par exemple par DUPOND
Ceci fonctionne très bien.
J'aimerai généralisé se processus à n Contactes
C'est à dire que si j'ai 3 contactes, mon document finale se compose de
3 pages ou chacune des pages contient respectivement le nom de chaque
contacte.
En résumé je cherche une solution simple et fiable pour arriver à dupliquer le template.
ou sinon connaissez vous un prog en VB capable de parser du code RTF?
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 juil. 2005 à 00:41
Salut
Je connais pas les techniques des Templates, mais il suffit de répéter 3 fois la même manip à partir d'un fichier Template vierge à chaque fois.
Donc ton problème est en réalité de faire défiler les 3 (ou X) noms renvoyés par ta requète sur la base de données.
Ne sachant pas comment tu as opéré, difficile de tout t'écrire ici.
Inspire toi des sources de ce site et intéresse toi aux objets RecordSet et faire une boucle du style :
monRecordSet.MoveFirst
While Not monRecordSet.EOF
' Les lignes qui permettent de faire ton insertion en utilisant comme nom : monRecordSet!NomDB
' où NomDB correspond au nom du champ dans ta DB
monRecordSet.MoveNext
Loop
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 juil. 2005 à 15:03
re
J'ai bien compris le principe, mais ce que tu n'as pas saisi, c'est qu'il fallait recharger le rtf original avant de faire chaque remplacement :
- Charge le rtf original
- remplace NOM
- sauve le nouveau dans une chaine
- Recharge le rtf original
- remplace NOM
- ajoute le rtf modifié au précédent (ChaineSauvée = ChaineSauvée & DernièreChaineModifiée)
- Recharge le rtf original
- remplace NOM
- ajoute le rtf modifié au précédent (ChaineSauvée = ChaineSauvée & DernièreChaineModifiée)
...
Seul doute : Un fichier rtf possède des codes d'entête (avec la définition des fontes utilisées dans le document) : à mon avis, on ne peut pas concaténer deux fichiers rtf comme ça. Il va falloir travailler sur la structure du rtf, bon courage !
D'autre part, méfie toi des mots trop courts : Comme tu lis le fichier rtf avec toute sa structure, il y a fort à parier que le texte NOM apparait ailleurs : Choisis des noms de balise|bookmark plus complexes, par exemple : {"NOM_A_REMPLACER"}
Comme ça, plus de possibilité de mélange.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je
Erenion
Messages postés3Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention21 juillet 2005 21 juil. 2005 à 20:17
J'ai concaténé le code rtf chargé au départ autant
de fois que j'ai de contactes à fusionner, en prenant soin pour
les n-1 contactes d'enlever la derniere "}" et de rajouter au nieme
contacte autant de "}" qu'il y'a de contactes
Je charge la chaine une seule fois et apres je fais du traitement sur cette chaine
dans le meme esprit que ce que tu as expliqué plus haut