2016-08-08 5 views
0

Crystal Reportsでパラメータを含むストアドプロシージャを使用するにはどうすればよいですか?私はVS 2013、asp.net、MVC、およびかみそりで次のコードを使用しています。レポートにパラメータを含むストアドプロシージャを使用する

public ActionResult AllCustomerReports() 
{ 
    ReportDocument rd = new ReportDocument(); 
    rd.Load(Server.MapPath("\\Reports\\rpt_AllCustomers.rpt")); 
    rd.SetDataSource(db.CUSTOMERs.Select(p => new 
    { 
     Id = p.Id, 
     CUSTOMER_CODE = p.CUSTOMER_CODE, 
     CUSTOMER_NAME = p.CUSTOMER_NAME, 
     CUSTOMER_EMAIL_ADDRESS = p.CUSTOMER_EMAIL_ADDRESS, 
     CUSTOMER_LANDLINE = p.CUSTOMER_LANDLINE, 
     CUSTOMER_TYPE_ID = p.CUSTOMER_TYPE.Id, 
     CUSTOMER_TYPE_NAME = p.CUSTOMER_TYPE.CUSTOMER_TYPE_NAME, 
     LOCATION_TYPE_ID = p.LOCATION_TYPE.Id, 
     LOCATION_TYPE_NAME = p.LOCATION_TYPE.LOCATION_TYPE_NAME, 
     INDUSTRY_TYPE_ID = p.INDUSTRY_TYPE.Id, 
     INDUSTRY_TYPE_NAME = p.INDUSTRY_TYPE.INDUSTRY_TYPE_NAME 
    }).ToList()); 

    Response.Buffer = false; 
    Response.ClearContent(); 
    Response.ClearHeaders(); 
    Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
    stream.Seek(0, SeekOrigin.Begin); 
    return File(stream, "application/pdf", "ListofAllCustomers.pdf"); 
} 

答えて

0

まず、データセットまたはデータテーブルのいずれかにデータベースレコードを取得し、そのデータを以下のようにレポートに割り当てる必要があります。 データを取得するためにレポートにパラメータを渡す必要はありません。 は、sp directのパラメータを渡すことができます。

DataSet ds = get data from database which call sp with parameter;     

string reportPath = Server.MapPath("~/Reports/XXXXX.rpt"); 
reportDocument.Load(reportPath); 

DataTable dt = ds.Tables[0].Copy(); 

reportDocument.SetDataSource(dt); 

CrystalReportViewer.ReportSource = reportDocument; 
CrystalReportViewer.DataBind(); 
+0

datetimepickerの値を使用してSPにパラメータを渡す方法を教えてください。ユーザーが入力したフィールドに基づいてレポートを生成するをクリックします。 – KimJean

+0

iframeを使用してレポートビューアを読み込んだことがありますか? –

+0

いいえ、私はその使い方がわかりません。 – KimJean

関連する問題