2011-06-17 51 views
0

我有一個新的Winforms應用程序正在替換現有的Access訂單處理系統,我需要複製一些現有的功能。從winforms申請郵件SSRS訂單

當前用戶輸入訂單數據並點擊確定。此時會生成訂單打印(使用訪問報告),並打開Outlook並將報告附加到新電子郵件中。電子郵件本身是用一些樣板文本填充的,但是從Access填充郵件到cc等字段。用戶然後可以立即點擊發送,或編輯電子郵件正文的內容。

在新系統上,我在SSRS中複製了報告,但是在我的應用程序中創建此報告的最簡單方法(傳遞參數以檢索正確的順序),然​​後打開Outlook,附帶創建的報告和基本字段預填充?

回答

1

您可以在SSRS中爲報表動態生成一次性訂閱。

您的代碼將是這個樣子:

static void generateSubscription() 
{ 
    if (SubscriptionRequests.Count < 1) return; 

    NetworkCredential credentials = new NetworkCredential("user", "pass"); 
    reports.ReportingService2005 rs = new reports.ReportingService2005(); 
    rs.Credentials = credentials; 
    DateTime topDatetime = DateTime.Now; 
    topDatetime = topDatetime.AddMinutes(2); 

    foreach (SubscriptionRequest x in SubscriptionRequests) 
    { 
     reports.ExtensionSettings extensionSettings = new reports.ExtensionSettings(); 
     List<reports.ParameterValue> extParameters = new List<reports.ParameterValue>(); 
     List<reports.ParameterValue> parameters = new List<reports.ParameterValue>(); 
     string description = "Email: "; 
     string eventType = "TimedSubscription"; 
     extensionSettings.Extension = "Report Server Email"; 

     string scheduleXml = "<ScheduleDefinition><StartDateTime>"; 
     scheduleXml += topDatetime.ToShortDateString() + " " + topDatetime.ToShortTimeString(); 
     scheduleXml += "</StartDateTime></ScheduleDefinition>"; 

     parameters.Add(new reports.ParameterValue() { Name = "abc", Value = x.id }); 


     extParameters.Add(new reports.ParameterValue() { Name = "RenderFormat", Value = x.renderFormat }); 
     extParameters.Add(new reports.ParameterValue() { Name = "TO", Value = x.email }); 
     extParameters.Add(new reports.ParameterValue() { Name = "ReplyTo", Value = x.replyTo }); 
     extParameters.Add(new reports.ParameterValue() { Name = "IncludeReport", Value = "True" }); 
     extParameters.Add(new reports.ParameterValue() { Name = "Subject", Value = "subject - " + " (" + x.id.ToString() + ")" }); 

     extParameters.Add(new reports.ParameterValue() { Name = "Comment", Value = x.body }); 
     extensionSettings.ParameterValues = extParameters.ToArray(); 

     description += topDatetime.ToShortDateString() + " " + topDatetime.ToShortTimeString(); 
     description += " (" + x.a + " - " + x.b + " - " + x.c + ")"; 
     string _reportName = "/report"; 
     rs.CreateSubscription(_reportName, extensionSettings, description, eventType, scheduleXml, parameters.ToArray()); 
     topDatetime = topDatetime.AddSeconds(30); 
    }   
}