2010-07-23 5 views
0

J'ai un rapport qui montre toutes les erreurs (s'il y en a) d'un processus qui s'exécute tous les jours.
À la fin du processus, je veux écrire du code pour exécuter le rapport et l'envoyer par courriel. Je vois comment envoyer un rapport par courrier électronique à partir du code, mais je n'arrive pas à trouver n'importe où qui montre comment exécuter le rapport à partir du code.
J'utilise C# dans vs 08, et le rapport est de ssrs 08. Toute aide serait grandement appréciée!Exécuter rapport SSER et l'envoyer par courrier électronique à partir du code. NET

Répondre

0

J'ai fini par créer un nouvel abonnement au rapport qui crée un travail. J'ai couru le travail à partir du code qui exécute le travail (Tiré de Microsoft)

Comme ceci:

SqlConnection jobConnection; 
     SqlCommand jobCommand; 
     SqlParameter jobReturnValue; 
     SqlParameter jobParameter; 
     int jobResult; 

     jobConnection = new SqlConnection("myconnectionstring"); 
     jobCommand = new SqlCommand("sp_start_job", jobConnection); 
     jobCommand.CommandType = System.Data.CommandType.StoredProcedure; 

     jobReturnValue = new SqlParameter("@RETURN_VALUE", SqlDbType.Int); 
     jobReturnValue.Direction = ParameterDirection.ReturnValue; 
     jobCommand.Parameters.Add(jobReturnValue); 

     jobParameter = new SqlParameter("@job_name", SqlDbType.VarChar); 
     jobParameter.Direction = ParameterDirection.Input; 
     jobCommand.Parameters.Add(jobParameter); 
     jobParameter.Value = "name of the subscription job"; 
     jobConnection.Open(); 
     jobCommand.ExecuteNonQuery(); 
     jobResult = (Int32)jobCommand.Parameters["@RETURN_VALUE"].Value; 
     jobConnection.Close(); 

     switch (jobResult) 
     { 
      case 0: 
       Console.WriteLine("SQL Server Agent job, RunSISSPackage, started successfully."); 
       break; 
      default: 
       Console.WriteLine("SQL Server Agent job, RunSISSPackage, failed to start."); 
       break; 
     } 
     Console.Read(); 

En appelant le JOB- qui est un abonnement - le rapport a été rendu et envoyé aux destinataires de souscription .

0

Voici un code de vb pour rendre le rapport en octets:

Private Sub ExportReport(ByVal ReportViewer) 
    reportType = "PDF" 
    deviceInfo = "<DeviceInfo><OutputFormat>PDF</OutputFormat><PageWidth>8.5in</PageWidth><PageHeight>11in</PageHeight><MarginTop>0.5in</MarginTop><MarginLeft>0.5in</MarginLeft><MarginRight>0.5in</MarginRight><MarginBottom>0.5in</MarginBottom></DeviceInfo>" 
    renderedBytes = ReportViewer.LocalReport.Render(reportType, deviceInfo, mimeType, Encoding, fileNameExtension, streams, warnings) 
End Sub 


Public Function CreateAttachment() As Attachment 
    Dim MemStr As New MemoryStream(renderedBytes) 
    Dim ContentType As New ContentType(mimeType) 
    Dim pdf As New Attachment(MemStr, ContentType) 
    pdf.Name = ReportName & "." & fileNameExtension 
    Return pdf 
End Function 

cela montre les trucs de base pour le rendu d'un rapport dans le code. Code VS 2005

+0

Je vois que vous utilisez un viewer. Je n'ai pas d'interface utilisateur - j'ai besoin de savoir comment rendre/appeler un rapport sans ReportViewer. – sher1000

+0

J'utilise le visualiseur de rapports de manière non visuelle, juste pour rendre la sortie. Vous pouvez en déclarer un et créer sans formulaire. Le serveur SSR signale-t-il un rapport en mode local ou en mode serveur? – Decker97

0

Si vous n'utilisez pas ReportViewer, appelez le Reporting Service web server (et non gestionnaire de rapports), puis envoyez-le par courrier électronique.

Questions connexes