IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Impression d'un rapport Reporting Services depuis une application asp.net C#


Sujet :

C#

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut Impression d'un rapport Reporting Services depuis une application asp.net C#
    Bonjour,

    J'aimerais cliquer sur un bouton de mon application web et imprimer un rapport Reporting Services que j'ai au préalable créé avec SSRS.

    Savez-vous comment dois-je m'y prendre ?

    Merci pour votre retour.

  2. #2
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Client-side ou bien server-side?

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut
    Côté client, oui !

  4. #4
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Dans les deux cas, tu peux passer par le composant reportviewer. Inspires-toi de ce lien ou de ceci.

    En mode local, tu devrais avoir:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LocalReport report = new LocalReport();
    report.ReportPath = @"..\..\Report.rdlc";
    //... la suite de ton code d'impression
    alors qu'en mode server-side, tu auras:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var report = new ServerReport(); 
    report.ReportServerUrl = new Uri("http://localhost/Reportserver"); // à remplacer par l'adresse de ton serveur de rapport
    report.ReportPath = "/MyReportDirectory/MyReport01"; // le chemin vers ton report
    //... la suite de ton code d'impression

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut
    Justement, je veux éviter de passer par le ReportViewer...
    J'aimerais directement imprimer mon rapport sans le visualiser.

  6. #6
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Citation Envoyé par lucazzo Voir le message
    Justement, je veux éviter de passer par le ReportViewer...
    J'aimerais directement imprimer mon rapport sans le visualiser.
    As-tu consulté le premier lien (Printing a Local Report without Preview) que j'ai donné précédemment? Tout y est expliqué.

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut
    Oui, merci pour le lien.
    Mais mon application est une application web et pas une windows form.

    Je me retrouve avec du code exprès pour du windows form donc c'est un peu compliqué.

  8. #8
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Citation Envoyé par lucazzo Voir le message
    mon application est une application web et pas une windows form.

    Je me retrouve avec du code exprès pour du windows form donc c'est un peu compliqué.
    En fait, c'est le même principe pour les webforms et si tu suis la méthodologie indiquée dans le lien, tu devrais arriver au même résultat. le principe est de faire un render de ton report vers un objet EMF et d'utiliser l'objet .Net PrintDocument pour imprimer directement le fichier image EMF via une imprimante donnée.

    Télécharge ReportPrintDocument et intègre le à ton projet. Ensuite, tu peux faire ceci:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    private void PrintProcess(string numeroFacture)
    {
        var report = new LocalReport();
     
        report.DataSources.Add(new ReportDataSource("UnDataSet",TaSourceDeDonnees);
        report.ReportEmbeddedResource = "TonProject.Reports.ImmaCustomerBill.rdlc"; // Chemin vers le fichier rdlc
         // ou dans le cas ou le rapport n'est pas une EmbeddedResource:
         //LocalReport report = new LocalReport();
         //report.ReportPath = @"..\..\Report.rdlc";
     
        // Si c'est un server-side report:
        var report = new ServerReport(); 
        report.ReportServerUrl = new Uri("http://MyServerAddress/Reportserver"); // Mettre l'adresse de ton serveur de rapport 
        report.ReportPath = "/YouReportDirectory/NameOfTheReport"; // chemin d'accès vers l"état à imprimer 
     
        // Definition des paramètres
        var param = new ReportParameter[2];
        param[0] = new ReportParameter("Param1", "Valeur param 1");
        param[1] = new ReportParameter("Param2", "Valeur param 1");
     
        try
        {
            report.SetParameters(param);
     
            var pdoc = new ReportPrintDocument(report);
     
            string strDefaultPrinter = RetrieveDefaultPrinterName();
     
            if (strDefaultPrinter == null)
            {
                MessageBox.Show("Aucune imprimante n'a été défini sur votre ordinateur");
                return;
            }
     
            pdoc.PrinterSettings.PrinterName = strDefaultPrinter; // Imprimera ton état sans passer par le "Print Settings Dialog"
            pdoc.Print();
     
        }
        catch (Exception ex)
        {
            MessageBox.Show("Une erreur s'est produite au cours de l'impression du rapport" + ex.Message);
        }
     
     
    }
     
    // Ce code retournera le nom de l'imprimante par défaut.
    private static string RetrieveDefaultPrinterName()
    {
        var prtdoc = new PrintDocument();
     
        var strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;
     
        if (strDefaultPrinter == null)
            throw new ArgumentNullException("Pas d'imprimante installée sur votre ordinateur");
     
        return strDefaultPrinter;
    }

  9. #9
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Se basant sur ce topic, il semble qu'il n'est pas possible avec les pages aspx d'imprimer directement sur le default printer du client sans aucune notification. Il est donc conseillé d'afficher un preview du report à l'aide du composant reportviewer et permettre à l'utilisateur d'imprimer en choisissant l'imprimante requise.

    Sinon, il y a aussi ce topic qui pourra bien te servir.

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut
    Mais comment déclencher le PrintProcess() ??

    Et je dois intégrer la classe ReportPrintDocument.cs dans mon projet? Mais impossible d'accéder aux méthodes..

Discussions similaires

  1. état reporting services dans une app ASP.NET C#
    Par tinhinan6 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 13/09/2013, 22h36
  2. Réponses: 1
    Dernier message: 06/05/2011, 20h49
  3. Client windows phone7 et web service depuis une application GWT
    Par malak.ensa dans le forum Windows Phone
    Réponses: 6
    Dernier message: 01/05/2011, 22h29
  4. Réponses: 1
    Dernier message: 14/02/2008, 22h47
  5. Réponses: 3
    Dernier message: 18/12/2006, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo