Impression de Modèle de Document Word et Requetes Access

Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007 - 5 juin 2006 à 22:35
jay__h Messages postés 1 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 20 juin 2006 - 20 juin 2006 à 14:37
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

bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
5 juin 2006 à 22:43
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.
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
5 juin 2006 à 22:48
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
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
5 juin 2006 à 23:50
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
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
5 juin 2006 à 23:59
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
6 juin 2006 à 00:20
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 ;)
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
6 juin 2006 à 15:54
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
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
6 juin 2006 à 17:32
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 ;-)
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
6 juin 2006 à 20:15
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
0
jay__h Messages postés 1 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 20 juin 2006
20 juin 2006 à 14:37
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.
0
Rejoignez-nous