Par programme de l'exportation de rapports de SQL 2012 Reporting Services
J'ai une application console qui a besoin de se connecter à SQL Reporting Services de SQL Server Express 2012.
Tous les exportateurs de la logique devrait être mis en œuvre dans une dll, et les chemins d'accès doivent être dynamiques (j'ai une boucle à travers différents paramètres pour les différents serveurs/rapports et de les exporter vers Excel un par un).
J'ai essayé de suivre ces tutoriels:
http://www.aspose.com/docs/display/wordsreportingservices/Rendering+Rapports+par programmation
En gros, j'ai ajouté des références web:
http://localhost:80/ReportServer_SQLEXPRESS12/ReportExecution2005.asmx
et
http://localhost:80/ReportServer_SQLEXPRESS12/ReportService2010.asmx
à ma dll. Semble bon jusqu'à présent, à l'exception de ceux méchant app.paramètres de configuration (je vais devoir les adapter dynamiquement plus tard).
Puis j'ai essayé de faire comme dans l'exemple:
//Create Web service proxies.
ReportingService2010.ReportingService2010 rs = new ReportingService2010.ReportingService2010();
ReportExecutionService.ReportExecutionService rsExec = new ReportExecutionService.ReportExecutionService();
et a obtenu certains problèmes:
Error 76 The type or namespace name 'ReportExecutionService' does not exist in the namespace 'MyDllNamespace.ReportExecutionService' (are you missing an assembly reference?)
Error 74 The type or namespace name 'ReportingService2010' does not exist in the namespace 'MyDllNamespace.ReportingService2010' (are you missing an assembly reference?)
Maintenant où dois-je aller, comment dois-je utiliser l'API Reporting Services, si je ne peux même pas créer un objet proxy? Ou devrais-je mieux d'utiliser ServerReport classe forme les Winforms ReportViewer au lieu de ces références web?
Même un de Microsoft exemples est l'aide de ReportViewer dans une application console, mais il semble un peu maladroit pour importer des Winforms dans une application console.
J'ai fini par utiliser
Microsoft.Reporting.WinForms.ServerReport
combiné avec des morceaux de code donné par tschmit007 dans la accepté de répondre.OriginalL'auteur JustAMartin | 2012-08-30
Vous devez vous connecter pour publier un commentaire.
J'espère que le suivant sera de l'aide (extrait de les parties pertinentes du code)
avec la suivante (attention à la gestion des flux)
Utilisez-vous Rendu, ou RenderTo. Si vous utilisez le Rendu, c'est probablement un manque close() pour le retour de flux.
À proximité qui est là. Mais toujours le même problème.
peut-être une chasse d'eau avant de le fermer ?
Je reçois aussi un fichier corrompu - mais je ne suis pas à l'aide de FileContentResult de sorte qu'il pourrait être un problème avec mon application. Adobe Reader n'a pas pu ouvrir de test.pdf', parce que c'est pas un type de fichier pris en charge ou parce que le fichier a été endommagé (par exemple, il a été envoyé en tant que pièce jointe et n'a pas été correctement décodés).
OriginalL'auteur tschmit007