Précédent   Forum du club des développeurs et IT Pro > Dotnet > Langages > C#
C# Forum d'entraide sur la programmation C#. Avant de poster -> FAQ C#, Articles C#, Sources C#
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/03/2008, 15h39   #1
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
Par défaut [C# VS 2003]Vider spool imprimante

salut à tous

actuellement je bosse sur une appli qui gére des commande de repas et doit permettre l'éditions des factures jusque la rien de bien compliqué .

Sauf lorsque je veut imprimer plus beaaucoup de factures mon programme ne veut plus imprimer je suis obliger de le relancer afin de demander l'impression des factures restantes.

J'aurai donc voulu vider le buffer de l'imprimante afin ne plus avoir a redemarer mon programme toutes les 30-40 factures sachant que j'en ai en moyennes 70 à imprimmer a la suite.

Est-ce quelqu'un aurait deja recontré le probleme ?

d'avance merci.
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 09h07   #2
varod
Membre régulier
 
Inscription : mars 2008
Messages : 58
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 58
Points : 73
Points : 73
Citation:
Envoyé par Papy_Guik Voir le message
salut à tous

actuellement je bosse sur une appli qui gére des commande de repas et doit permettre l'éditions des factures jusque la rien de bien compliqué .

Sauf lorsque je veut imprimer plus beaaucoup de factures mon programme ne veut plus imprimer je suis obliger de le relancer afin de demander l'impression des factures restantes.

J'aurai donc voulu vider le buffer de l'imprimante afin ne plus avoir a redemarer mon programme toutes les 30-40 factures sachant que j'en ai en moyennes 70 à imprimmer a la suite.

Est-ce quelqu'un aurait deja recontré le probleme ?

d'avance merci.
Je n'ai pas rencontré ce problème ... Cependant, j'ai rencontré souvent des problèmes de spoolers d'impression. Bien que je ne pense pas que cela soit une bonne solution, tu peux redémarrer le service du spooler d'impression à l'aide des commandes net stop et net start spooler ...

Mais honnêtement, je pense que le problème provient d'autre part ... ne serait-ce pas tes impressions qui ont une taille en file d'attente un peu trop grande ? Comment gères tu l'impression ?
varod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 14h52   #3
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
en fait j'edite mes fichier grace a Crystal Report

ensuite pour mes impression je fait une boucle qui appelle mes factures puis j'imprime grace à

Code :
1
2
3
4
 
  PrintDialog imprimante = new PrintDialog();
  laFacture.PrintOptions.PrinterName =imprimante.PrinterSettings.PrinterName.ToString();     
  laFacture.PrintToPrinter(1, true, 1, nbPage);
je suis pas sur que cela soit la meilleur solution mais j'ai récupérer le code en route l'ancien developpeur aillant démissionné je m'adapte au code comme je peu
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 15h55   #4
varod
Membre régulier
 
Inscription : mars 2008
Messages : 58
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 58
Points : 73
Points : 73
Citation:
Envoyé par Papy_Guik Voir le message
en fait j'edite mes fichier grace a Crystal Report

ensuite pour mes impression je fait une boucle qui appelle mes factures puis j'imprime grace à

Code :
1
2
3
4
 
  PrintDialog imprimante = new PrintDialog();
  laFacture.PrintOptions.PrinterName =imprimante.PrinterSettings.PrinterName.ToString();     
  laFacture.PrintToPrinter(1, true, 1, nbPage);
je suis pas sur que cela soit la meilleur solution mais j'ai récupérer le code en route l'ancien developpeur aillant démissionné je m'adapte au code comme je peu
Mlaheureusement, je ne connais pas les objets crystal report ... Essaie tjs en redémarrant le spooleur toutes les n impressions ...
Peut être que quelqu'un d'autre saura mieux te répondre.

Bon courage.
varod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 16h04   #5
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
désoler de te déranger encore mais c'est quoi le nom de l'objet gerant le spool (je m'en suis jamais servit ).
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 16h19   #6
varod
Membre régulier
 
Inscription : mars 2008
Messages : 58
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 58
Points : 73
Points : 73
Citation:
Envoyé par Papy_Guik Voir le message
désoler de te déranger encore mais c'est quoi le nom de l'objet gerant le spool (je m'en suis jamais servit ).
En fait, ce que je t'ai donner c'est la commande DOS pour arreter et redémarrer ... alors méthode pas propre faire un ProcessStart ... Sinon il me semble qu'il existe un objet pour gérer les services.

Effectivement, après vérification tu as un controle "graphique" qui se trouve dans Component / ServiceController. Tu n'as qu'à préciser le nom du serivce (en l'occurence Spooler).

Code :
1
2
3
4
5
6
 
private System.ServiceProcess.ServiceController serviceController1;
 this.serviceController1 = new System.ServiceProcess.ServiceController();
this.serviceController1.ServiceName = "Spooler";
serviceController1.Stop();
serviceController1.Start();
varod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 16h37   #7
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
Cool Merci j'ai trouver le composant

je vais tester cela et je te tien au courant
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2008, 09h29   #8
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
Bon apres quelques tests j'ai toujours mon probleme. "Load Report Failed" sur mes derniere factures.

Donc cela ne doit pas venir de la memoire du Spooler par contre je vois pas d'ou cela pourai venir.Peut etre un probléme de tempo pour la création d'un rapport ?
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 08h52   #9
varod
Membre régulier
 
Inscription : mars 2008
Messages : 58
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 58
Points : 73
Points : 73
Citation:
Envoyé par Papy_Guik Voir le message
Bon apres quelques tests j'ai toujours mon probleme. "Load Report Failed" sur mes derniere factures.

Donc cela ne doit pas venir de la memoire du Spooler par contre je vois pas d'ou cela pourai venir.Peut etre un probléme de tempo pour la création d'un rapport ?
N'aurais tu pas une erreur un peu plus détaillée (l'exception même ou bien dans le journal d'évènement) ?

Sinon, au niveau des enchainements des impressions, ca se passe comment ? Tu créés un thread par impression ou bien tu les enchaines séquentiellement ?

Dans le cas de plusieurs thread, je te conseillerai de limiter le nombre d'impression simultanée à 2 ou 3 en utilisant un ThreadPool.
Dans le cas d'un enchainement séquentiel, je propose que tu fasses du pas à pas et que tu essaies d'isoler à partir de quel édition ca plante. Peut etre que le problème ne provient pas de l'impression mais tout simplement d'une édition qui n'arrive pas à se générer ? Si ça passe en faisant du pas à pas, tu peux mettre un Thread.Sleep() entre deux éditions, sinon je te conseil d'activer les exceptions (CTRL D + E) lors de l'édition pour trouver d'ou provient l'erreur exactement.

Tiens moi au courant.
varod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 09h44   #10
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
Salut

je fait mes impressions de maniere sequentielle je viens de tester le thread.sleep(1000) (mais seulement toutes les 40 impressions pasque sinon ca fait encore ralentir la gestion des impression 70 *1000ms ca commence a faire long )

Cependant jai toujours le même soucis je vais essayer en mode pas a pas pour se qui est du message d'erreur je n'ai que ca via le message de l'exeption

================Edit===============
En recuperant le nom du programme qui plante j'ai reussi a récupéré

CrystalDecisions.CrystalReports.Engine

donc serait ce crystal report qui s'embale et n'arrive pas a imprimé tout mes rapports ?
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 10h58   #11
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
C'est bon j'ai trouvé en tout cas ca a l'air de marché

il suffisait de fermé mon rapport

car sinon crystal report ne fait pas bien son boulot ou alors c'est ramasse miette je c'est pas trop.

Code :
1
2
3
4
5
6
7
 
PrintDialog imprimante = new PrintDialog();
  laFacture.PrintOptions.PrinterName =imprimante.PrinterSettings.PrinterName.ToString();     
  laFacture.PrintToPrinter(1, true, 1, nbPage);
 
//fermeture du rapport
laFacture.Close();
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 11h04   #12
varod
Membre régulier
 
Inscription : mars 2008
Messages : 58
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 58
Points : 73
Points : 73
Citation:
Envoyé par Papy_Guik Voir le message
C'est bon j'ai trouvé en tout cas ca a l'air de marché

il suffisait de fermé mon rapport

car sinon crystal report ne fait pas bien son boulot ou alors c'est ramasse miette je c'est pas trop.
Moi, j'aurai tendance à dire que ce n'est ni crystal, ni le ramasse miette qui a fait un loupé ... mais plutot le développeur
Je pense que tu devais avoir une légère fuite de mémoire
varod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 11h17   #13
Papy_Guik
Membre à l'essai
 
Développeur Web
Inscription : janvier 2007
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 74
Points : 20
Points : 20
Ouai je suis assez d'accord sur l'histoire de la fuite de mémoire

et puis bon maintenant je le saurais

et merci encore
Papy_Guik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h21.


 
 
 
 
Partenaires

Hébergement Web