[英]Pass parameter to a stored procedure to crystal report?
I was starting reading this tutorial to utilize crystal reports 我开始阅读本教程以利用水晶报表
http://www.codeproject.com/Articles/142064/Step-by-Step-Creation-of-Crystal-Report-using-its http://www.codeproject.com/Articles/142064/Step-by-Step-Creation-of-Crystal-Report-using-its
I'm facing this situation, in a stored procedure I have to set some parameters to get the query. 我面对这种情况,在存储过程中,我必须设置一些参数来获取查询。 So I supposed I need to set the dataSource in runtime, but I have no idea about how to send the stored procedure result to crystal reports and show it in runtime (because until I know, if you want to display something in it, you have to import it and select the fields that you want to place it. 因此,我以为我需要在运行时设置dataSource,但是我不知道如何将存储过程结果发送到Crystal报表并在运行时显示它(因为直到我知道,如果要在其中显示某些内容,导入它,然后选择要放置它的字段。
first make new form for crystal viewre.. add crystal viewer in it.. 首先为Crystal Viewre创建新表格。在其中添加Crystal Viewer。
add this code in that form 以这种形式添加此代码
public void ShowForm(DataSet pDataSet)
{
CrystalDecisions.Shared.ConnectionInfo ConnInfo = new CrystalDecisions.Shared.ConnectionInfo();
ReportDocument RepDoc = new ReportDocument();
RepDoc.Load(ReportPath With Rpt name);
TableLogOnInfo TableLogOnInfo;
ConnInfo.ServerName = ServerName;
ConnInfo.DatabaseName = ServerDBName;
ConnInfo.UserID = ServerDBUserName;
ConnInfo.Password = ServerDBPassWord;
foreach (Table TableInRep in RepDoc.Database.Tables)
{
TableLogOnInfo = TableInRep.LogOnInfo;
TableLogOnInfo.ConnectionInfo = ConnInfo;
TableInRep.ApplyLogOnInfo(TableLogOnInfo);
}
CryViewer.ReportSource = RepDoc;
RepDoc.Database.Tables[0].SetDataSource(pDataSet);
this.Show();
} }
using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Text;
using CrystalDecisions.Web;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
namespace TexERP.ReportCrystal
{
public partial class AccountRegister : System.Web.UI.Page
{
clsSession objSession;
ReportDocument rptDoc;
protected void Page_Load(object sender, EventArgs e)
{
objSession = new clsSession();
rptDoc = new ReportDocument();
if (Session["objSession"] != null)
{
objSession = Session["objSession"] as clsSession;
}
if (!IsPostBack)
{
Session["ReportDataSet"] = null;
}
if (Session["ReportDataSet"] != null)
{
crvAccountReportParameter.ReportSource = (ReportDocument)Session["ReportDataSet"];
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
LoadData();
}
protected void LoadData()
{
string pstrType;
pstrType = Request.QueryString["Type"];
DataSet dsData = null;
dsData = objAccountReportBAL.getAccountRegister(Convert.ToInt16(objSession.FyId), int.MinValue, long.MinValue, Convert.ToDateTime(RadDtpFromDate.SelectedDate), Convert.ToDateTime(RadDtpToDate.SelectedDate), pstrType);
rptDoc.Load(Server.MapPath("~/ReportCrystal/Account/Detail/GeneralVoucharRegister.rpt"));
rptDoc.SetDataSource(dsData.Tables[0]);
Session["ReportDataSet"] = rptDoc;
crvAccountReportParameter.ReportSource = rptDoc;
crvAccountReportParameter.DataBind();
}
}
}
You can do like this........ 你可以这样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.