2010-10-08 5 views
0

J'ai une application Web qui utilise le contrôle ReportViewer dans ASP.NET. Les rapports sont définis dans l'application Web, dans des fichiers .rdlc. Les rapports fonctionnent très bien, à l'exception de la fonctionnalité d'impression. Lorsque l'utilisateur clique sur l'icône "Imprimer" dans la section d'en-tête du rapport, il apparaît que l'application Web essaie d'installer SQL Server (?!). Voici la boîte de dialogue de téléchargement de fichier qui apparaît: alt textProblème d'impression depuis le contrôle ReportViewer dans l'application Web ASP.NET

Quelqu'un peut-il nous donner une idée de ce qui se passe? Je ne suis pas sûr où commencer même à déboguer ceci, parce que tout ceci se passe "dans les coulisses" dans le code de ReportViewer.

Merci pour tout conseil que vous pouvez donner.

Répondre

2

Ce n'est pas SQL Server qu'il essaie d'installer, c'est un ActiveX/plugin pour imprimer des fichiers de rapport, cliquez sur Oui, installez-le et essayez d'imprimer.

+0

Nous vous remercions de votre réponse. J'obtiens les mêmes résultats, peu importe ce que je fais, installe, n'installe pas ou même ne fais que faire une pause pendant un moment quand la boîte de dialogue est affichée ... ils plantent tous l'onglet dans le navigateur, et le site disparaît, puis le navigateur "récupère" un onglet vierge. C'est dans IE qui doit être le navigateur que j'utilise (par le client) – rogdawg

+0

Essayez ceci: Accédez à Program Files \ Microsoft \ SQL Server \ MSSQL.x \ Reporting Services \ ReportServer \ bin et copiez ces fichiers dans Windows \ Downloaded fichiers de programme (fenêtres de commande d'utilisation, cmd): - RSClientPrint.dll - rsclientprint.inf - RsClientPrint_1028.rll - RsClientPrint_1031.rll - RsClientPrint_1033.rll - RsClientPrint_1036.rll - RsClientPrint_1040.rll - RsClientPrint_1041.rll - RsClientPrint_1042.rll - RsClientPrint_2052.rll - RsClientPrint_3082.rll Ensuite, enregistrez RSClientPrint.dll (regsvr32 [chemin] RSClientPrint.dll). Si vous ne trouvez pas ces fichiers, extrayez rsclientprint.cab. –

+0

Merci d'avoir suivi ce sujet. Je reçois toujours une erreur ... cette fois, j'ai choisi d'installer le truc ActiveX. Il y avait un problème, m'a demandé si je voulais déboguer le problème (en utilisant le débogueur), j'ai choisi non, et il a planté le navigateur (onglet) de la même manière qu'il le faisait auparavant. Je pense que je devrais simplement désactiver l'impression sur les rapports. Mes clients ne seront probablement pas en mesure de télécharger le contrôle ActiveX pour obtenir l'impression. Merci de votre aide. Je leur dirai d'exporter pour exceller en premier (ou en PDF), puis imprimer. MERCI BEAUCOUP POUR VOTRE GUIDAGE. – rogdawg

1

Oui. Avant que j'ai été essayé le même problème. Mais après cela j'ai eu la solution. La chose principale est, nous ne pouvons pas imprimer le rapport directement à partir de la machine client. J'ai trouvé deux façons d'imprimer le rapport dans la machine client. L'un est à travers le contrôle ActiveX. Le client ne sait pas, comment installer le contrôle ActiveX dans leur machine, principalement ils ne veulent pas ces choses irrettantes. Donc, j'ai trouvé l'autre moyen que nous pouvons imprimer à travers le fichier PDF. Maintenant, tous ont Adobe Reader PDF dans leur machine. J'ai donc navigué, comment imprimer directement pdf sans enregistrer dans leur machine client. Finalement j'ai eu la solution. Les étapes sont:

L'exemple de code écrit en C#.

i). Convertir le rapport en flux mémoire:

string reportType = "PDF"; 
    string mimeType; 
    string encoding; 
    string fileNameExtension; 
    //The DeviceInfo settings should be changed based on the reportType 
    ////http://msdn2.microsoft.com/en-us/library/ms155397.aspx 

    string deviceInfo = "<DeviceInfo>" + " <OutputFormat>PDF</OutputFormat>" + " <PageWidth>8.27in</PageWidth>" + " <PageHeight>11.69in</PageHeight>" + " <MarginTop>0in</MarginTop>" + " <MarginLeft>0in</MarginLeft>" + " <MarginRight>0in</MarginRight>" + " <MarginBottom>0in</MarginBottom>" + "</DeviceInfo>"; 
    Warning[] warnings; 
    string[] streams; 
    byte[] renderedBytes; 
    //Render the report  
    renderedBytes = _rptViewer.LocalReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings); 
    Stream mystream = new MemoryStream(renderedBytes); 
Questions connexes