Imprimer un crystal report dans une application web

Soyez le premier à donner votre avis sur cette source.

Snippet vu 35 442 fois - Téléchargée 34 fois

Contenu du snippet

IMPRIMER UN RAPORT EN UTILISANT DES TABLES QUI PROVIENNENT D'UNE BASE DE DONNÉES SÉCURISÉE(SQLSERVER)

Ce code vous explique comment vous authentifier à des tables Sql Server en utilisant Crystal Report dans Visual Studio.net pour une application Web.

Cette authentification est obligatoire, si elle n'est pas faite lorsque qu'un usager tentera de visionner le rapport ou de l'imprimer, il obtiendra l'erreur "Logon Failed".

Source / Exemple :


Vous avez besoin de 
using CrystalDecisions.Shared
using CrystalDecisions.CrystalReports.Engine

//Créer l'instance pour un nouveau rapport
ReportDocument crpt = new ReportDocument();								
//Charger le rapport	
crpt.Load("C:\\Reports\\rapport.rpt");     
									    
//Pour pouvoir utiliser un Crystal Report avec Sql Server on doit s'authentifier à chacune des tables contenues dans le rapport avec un compte d'utilisateur SqlServer. Sinon on obtient l'erreur login failed lorsque que l'on veut utiliser ce rapport.

//Cette boucle permet de parcourir chacune des tables utilisées dans le rapport.	

int i;
		
for (i=0;i <= crpt.Database.Tables.Count - 1;i++) 
{
    
    TableLogOnInfo logOnInfos = new TableLogOnInfo ();

    //Informations requises pour s'authentifier
    logOnInfos.ConnectionInfo.ServerName = "SqlServer";
    logOnInfos.ConnectionInfo.DatabaseName = "NomDeLaBaseDeDonnées";
    logOnInfos.ConnectionInfo.UserID = "NomDutilisateur";
    logOnInfos.ConnectionInfo.Password = "MotdePasse";

    //Appliquer les informations pour la table dans laquelle on est rendu dans la boucle
    crpt.Database.Tables[i].ApplyLogOnInfo(logOnInfos);		
}
						
//On choisi le nom de l'imprimante à utiliser
crpt.PrintOptions.PrinterName = "Office";
						
//Imprimer le rapport(les 4paramètres sont bien expliqués dans l'éditeur de code, c'est genre nombre de copies, page de début et fin...)

crpt.PrintToPrinter(1,false,0,0);

Conclusion :


C'est la première source que j'ajoute dans ce site. Donc, ce n'est p-e pas parfait, car je suis un débutant avec le C#. Par contre , je viens souvent consulter ce site pour obtenir de l'aide, donc je suis content si je peux à mon tour aider quelqu'un.

A voir également

Ajouter un commentaire

Commentaires

andlah
Messages postés
28
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
16 juin 2008
-
le code est tres bien
mais est ce qu'il y aurais moyen de ne pas avoir a spécifier

crpt.PrintOptions.PrinterName = "Office";

le nom de l'imprimante a chaque fois qu'on veux imprimer!!!
je suis en ASP.NET
cs_GBESS
Messages postés
2
Date d'inscription
dimanche 22 septembre 2002
Statut
Membre
Dernière intervention
20 mai 2005
-
J'ai essayé le code. l'impression est directe mais cela ne prend pas les données. Il imprime seumlement les noms des champs (les labels qui indiquent la nature du contenu affiché) mais pas les donnés. Par exemple un etat qui contient un label Nom et une zone de texte qui prend la valeur du nom, à l'impression, seulemnt le nabel nom sera imprimé
HolyDev
Messages postés
40
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
5 février 2008
-
Et pour se connecter à une base mySql comment faut s"y prendre ? Pcq ça me renvoie une erreur Échec de la connexion.
Détails : CrystalDecisions.CrystalReports.Engine.LogOnException: Échec de la connexion
cs_MELISA
Messages postés
72
Date d'inscription
mardi 16 avril 2002
Statut
Membre
Dernière intervention
12 février 2008
-
Bonjour,

Je débute sur le crystal report.
pouvez-vous m'expliquer à quoi sert la commande suivante et à quoi ressemble le fichier .rpt?

'crpt.Load("C:\\Reports\\rapport.rpt");'

Merci de votre aide.
Cordialement
samirnat
Messages postés
5
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
2 septembre 2005
-
Bonjour,
Pourqoi instancier l'objet logOnInfos pour chacune des tables contenues dans le rapport ? y'a t'il vraiment une raison ?!
for (i=0;i <= crpt.Database.Tables.Count - 1;i++)
{
TableLogOnInfo logOnInfos = new TableLogOnInfo ();
...
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.