2013-10-27 3 views
9
public virtual ActionResult GetReportSnapshot() 
    { 
     var data = (ComparativeBalanceReportDS) TempData["ComparativeSession"]; 


     StiReport report = new StiReport(); 
     report.Load(Server.MapPath("~/Content/StimulReports/SampleReport.mrt")); 

     report.Compile(); 

     report["fromDocumentNumber"] = "1"; 
     report["toDocumentNumber"] = "85"; 
     return StiMvcViewer.GetReportSnapshotResult(HttpContext, report); 
    } 

Ich habe Prozedur gespeichert und in Designer ausführen, aber ich keine Parameter an ihn schicken und wenn Lauf App, ich die folgende Fehlermeldung erhalten:Wie sende ich Parameter an Stimulsoft?

Fehler: SqlCommand.Prepare Methode erfordert, dass alle mit variabler Länge Parameter, die explizit eine Größe ungleich Null haben sollen.

Was mache ich?

Antwort

9

Mein Problem wurde mit dem folgenden Code gelöst:

 public virtual ActionResult GetReportSnapshot() 
     { 
     var data = (ComparativeBalanceReportDS) TempData["ComparativeSession"];  
      StiReport report = new StiReport(); 
     report.Dictionary.DataStore.Clear(); 
     report.Load(Server.MapPath("~/Content/StimulReports/SampleReport.mrt")); 
     report["@enterpriseId"] = data.EnterpriseId; 
     report["@toDocumentNumber"] = data.NumberFilter.FromDocumentDocumentNumber; 
     report["@fromDocumentNumber"] = data.NumberFilter.ToDocumentDocumentNumber; 
     report["@fromDate"] = data.DateFilter.FromDocumentDate.Value; 
     report["@toDate"] = data.DateFilter.ToDocumentDate.Value; 
     return StiMvcViewer.GetReportSnapshotResult(HttpContext, report); 

     } 
4

Sie können mit den folgenden Code vor der Kompilierung Bericht:

report.Dictionary.DataSources["DataSourceName"].Parameters["ParameterName"].Value = "" 

auch Sie die zusätzlichen Variablen im Parameter Ausdruck verwenden können. In diesem Fall sollten Sie den Wert der Variablen vor dem Rendern des Berichts festlegen.