Impression de Modèle de Document Word et Requetes Access

Signaler
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
1
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
20 juin 2006
-
Bonjour

J'ai un problème assez précis, et j'ai beau cherché , je n'arrive pas à le résoudre.
Voila j'ai un logiciel de cuisine, et je voudrais par exemple que quand on selectionne une recette, et qu'on click sur l'icone imprimer.
Le programme ouvre un modèle de document word que j'ai crée, qu'il remplace les deux champs NomRecette,Details , une fois le modèle de document complèté, il l'imprime.

J'ai Plusieurs Problèmes :

- J'ai créer mon modèle en document donc en incluant un publipostage pour mettre les deux champs de la base de données. Mais bon c'est un peu flou et je sais même pas si j'ai réussi et j'ai trouvé nulle part quelque chose qui ressemble pour m'aider.
- J'ai trouvé comment ouvrir un template(modèle de document) word, j'ai pas trouvé comment modifier les champs à l'intérieur du document word
- Pour imprimer, je n'y comprend vraiment mais vraiment plus rien , trop de manière différentes, et rien d'explicite.

Si quelqu'un pouvait m'aider à résoudre mon problème, je lui serai redevable toute ma vie, je pense^^

Merci d'Avance
Maiku

9 réponses

Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Je ne vais pas te donner la réponse que tu attendais, mais pourquoi ne pas tout simplement créer un RTF en remplçant les "NomRecette" et "Details" ? Le RTF est lisible et compréhensible assez facilement, les specs sont publiques, contrairement à ton document word.
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

ReBonjour

Pour tout te dire, je sais même pas ce qu'est le RTF et qu'est sont ses possibilités ?
A un moment, je voulais faire du pdf, mais ca me semblait trop complexe.
Tu pourrais m'en apprendre plus sur le RTF ?

Merci d'Avance
Maiku
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Le format RTF possède des possibilités très avancées de mises en pages, et à la particularité d'être entièrement en mode texte. Un peu comme avec le HTML, si tu veux mettre un texte en gras il faut le mettre entre balises , avec le RTF il faudra faire \b

Pour t'en rendre compte par toi meme, reprend ton modèle de document word, et enregistre le au format RTF. Ensuite, ouvre le avec le bloc note comme ci c'était un fichier texte.

Le plus simple est de reprendre ton document source et de modifier le texte là où il le faut, tu n'auras pas de mal à le retrouver. Un peu de reverse engineering, si on peut appeller ca comme ca, devraient largement suffir pour ton projet. Toutefois tu peux toujours aller voir du coté des specs du RTF pour plus de détails :

Spec completes, un peu lourd c'est vrai =)
http://www.microsoft.com/downloads/details.aspx?familyid=ac57de32-17f0-4b46-9e4e-467ef9bc5540&displaylang=en

Sur wikipedia; un exemple très basique, ca devrait t'éclaircir les idées :
http://en.wikipedia.org/wiki/Rich_Text_Format
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

ReBonjour

Une Seule chose à dire : Waouh !

J'ai fait la première etape, reenregistrement du modèle de document en rtf et ouverture avec bloc note ca donne ça :

{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1036\deflangfe1036{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f28\fscript\fcharset0\fprq2{\*\panose 03040402040505080204}Carmine Tango;}

Enfin y a beaucoup plus mais je te passe les details, c'est impressionnant^^

Par contre la suite de tes explications me laisse perplexe, je comprend pas très bien.
Moi mon but c'est qu'une fois une recettes selectionné c'est à dire : MaRecette.Text, et Mon Detail.Text d'une liste box, je puisse appeler mon rtf, et que je puisse affecter au deux champs de mon modèle mes variables pour imprimer le tout.

Mais je suis persuadé que depuis le départ, j'ai déjà mal fait mon modèle de document car j'ai pas besoin de lien avec access puisque dans mon programme mes deux variables sont dans le programme et ne necessite pas de requete.
Le Problème est que je sais pas comment créer mon modèle de document avec trois champs dont les valeurs peuvent être changées par mon programme, et surtout je ne sais pas comment modifier les valeurs dans ce document et imprimer le tout.

Tout ce que je trouve est trop confus, et m'embrouille plus.
Merci d'Avance
Maiku
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Il n'y a pas de recette miracle, personnellement j'aurais écrit un fichier texte à 0 dans le genre :

StreamWriter sw =
new
StreamWriter("toto.rtf",
false
, ASCIIEncoding.Default);
sw.Write("{\\rtf\n");
sw.Write("blablablballba\\par\n");
sw.Write(MaRecete.Text + "\n");
[...]
sw.Write("}");
sw.Close();

Pour ensuite ouvrir toto.rtf. C'est facile à mettre en oeuvre même s'il faut se tapper toute l'écriture du document modèle. Peut être que d'autres auront d'autres idées ;)
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

ReBonjour

j'ai testé ta solution pour voir ce que ca donné, et j'avoue que cette solution me semble beaucoup plus simple que mon gros bazard, j'ai quasiment pas besoin de modèle, suffit juste après chaque impression de supprimer le fichier, il est temporaire en quelque sort.

Je suppose qu'on peut trouver comment mettre en gras, mettre en une certaine taille, à une certaine position après ?

Je vais m'y atteler dès maintenant , ensuite prochaine étape : l'impression.

Merci beaucoup à toi.
Maiku
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
De rien ;o

En fait j'ai pensé à un truc surement plus simple :

Tu lis ton fichier modèle ligne par ligne
Si MaRecette est dans la ligne, tu le remplace par ton recette.Text (et vive les fonctions de traitements de chaines de caractère de C#...)
Reecris la nouvelle chaine de caractère dans un autre fichier et faire jusqua fin du fichier modele.

A la fin tu recupère un fichier RTF dument complété et t'as meme pas besoin de te préoccuper des specs du RTF ;-)
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

ReSalut

Vu que la personne qui est sur le logiciel vois le details avant de l'imprimer, j'ai peut etre trouver quelque chose d'interessant.
Je charge dans un RichTextBox le document rtf, ensuite je remplace les elements que je souhaite :



this.DetailsRecette.LoadFile(".../MaRecette.rtf");



this.DetailsRecette.Rtf.Replace("MaRecette",this.Recettes.Text);



this.DetailsRecette.Rtf.Replace("Descriptif",detailsrecup);



this

.DetailsRecette.SaveFile(".../MaRecetteImprimer.rtf", RichTextBoxStreamType.RichText);

En Théorie ce code est bon, mais dans mon cas , je n'arrive à remplacer aucun des éléments,si je fais des changements de couleur, de police du genre :

this.DetailsRecette.SelectionColor = Color.Red
 
ben ce genre de chose marche, mais des que je met rtf, aucune de mes manipulations marche, c'est la clé de mon problème.
Quelqu'un peut il me dire pourquoi ça fonctionne pas ?

Merci d'Avance
Maiku
Messages postés
1
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
20 juin 2006

Bonjour,
pourquoi n'enregistres tu pas simplement ton modèle word en xml, apres il ne te reste plus qu'à parser ton fichier, en remplaçant les noeuds à modifier, j'utilise cela pour un module de relance de facture sa marche nickel.