Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    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.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : mars 2008
    Messages : 58
    Points : 68
    Points
    68

    Par défaut

    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 ?

  3. #3
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    Par défaut

    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

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : mars 2008
    Messages : 58
    Points : 68
    Points
    68

    Par défaut

    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.

  5. #5
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    Par défaut

    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 ).

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : mars 2008
    Messages : 58
    Points : 68
    Points
    68

    Par défaut

    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();

  7. #7
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    Par défaut

    Cool Merci j'ai trouver le composant

    je vais tester cela et je te tien au courant

  8. #8
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    Par défaut

    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 ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : mars 2008
    Messages : 58
    Points : 68
    Points
    68

    Par défaut

    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.

  10. #10
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    Par défaut

    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 ?

  11. #11
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    Par défaut

    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();

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : mars 2008
    Messages : 58
    Points : 68
    Points
    68

    Par défaut

    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

  13. #13
    Futur Membre du Club
    Développeur Web
    Inscrit en
    janvier 2007
    Messages
    74
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2007
    Messages : 74
    Points : 19
    Points
    19

    Par défaut

    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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •