2011-01-10 3 views
1

は、入力した後、asp.netでクリスタルレポートのパラメータを設定するには?

http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-string-parameter.htm

のASP .NETは自動的に

しかし入力するテキストボックスまたはのDateTimePickerを持つことになりますポストを参考にして、レポート、テキストボックスをリフレッシュして、ボタンが消え提出

  1. もう一度テキストボックスとボタンを表示するには?
  2. とポスト内の関数は、(datetime値のtoshortdatestringを通過した後に動作しない)、カレンダーコントロールから

答えて

1

手動でCrystalレポートにパラメータを渡すことができます。このようにして、独自のパラメータのフォームを作成し、ユーザ入力を処理してレポートに送信することができます。ここではあなたがそれを行うことができますどのようにお見せするスニペットです:

ReportDocument doc = new ReportDocument(); 
doc.Load(Path.Combine(basePath, report.Name + ".rpt")); 
doc.SetDataSource(dataTable); 

// set parameters defined in Paramenter fields inside the rpt 
var value = new ParameterDiscreteValue(); 
value.Value = valueYouWantToPass; 
doc.ParameterFields["nameOfTheParamenterField"].CurrentValues.Add(value); 
1

は試してみてください。

 Imports CrystalDecisions 
     Imports CrystalDecisions.CrystalReports 
     Imports CrystalDecisions.CrystalReports.Engine 
     Imports CrystalDecisions.Shared 

     Dim RptDoc As New ReportDocument() 
     Dim CrTables As Tables 
     Dim CrTable As Table 
     Dim crtableLogoninfo As New TableLogOnInfo 
     RptDoc.Load(Server.MapPath(ReportFullFilename)) 

        With crConnectionInfo 
         .ServerName = "myServer" 
         .DatabaseName = "myDatabase" 
         .UserID = "myUserID" 
         .Password = "myPassword" 
        End WITH 

     CrTables = RptDoc.Database.Tables 

     For Each CrTable In CrTables 
      crtableLogoninfo = CrTable.LogOnInfo 
      crtableLogoninfo.ConnectionInfo = crConnectionInfo 
      CrTable.ApplyLogOnInfo(crtableLogoninfo) 
     Next 

     RptDoc.SetDatabaseLogon(crConnectionInfo.UserID, crConnectionInfo.Password, crConnectionInfo.ServerName, crConnectionInfo.ServerName) 


     RptDoc.SetParameterValue("FromDate", FromDatePicker.SelectedDate) 
     RptDoc.SetParameterValue("ThruDate", ToDatePicker.SelectedDate) 

     Dim stream As New BinaryReader(RptDoc.ExportToStream(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat)) 
     Response.ClearContent() 
     Response.ClearHeaders() 
     Response.ContentType = "application/pdf" 
     Response.AddHeader("content-disposition", Convert.ToString("attachment; filename=") & downloadAsFilename) 
     Response.AddHeader("content-length", stream.BaseStream.Length.ToString()) 
     Response.BinaryWrite(stream.ReadBytes(Convert.ToInt32(stream.BaseStream.Length))) 
     Response.Flush() 
     Response.Close() 
関連する問題