我有问题,每次重新加载其他水晶报告时,参数都在寻找值。我只使用一个crystalreportviewer。
ReportDocument rd = new ReportDocument();
public string user;
string repCust = @"C:\Users\Jeff Enad\Desktop\TEST1\Cebu Hallmark Hotel Management System\Cebu Hallmark Hotel Management System\cryCustomer.rpt";
string repRept = @"C:\Users\Jeff Enad\Desktop\TEST1\Cebu Hallmark Hotel Management System\Cebu Hallmark Hotel Management System\cryReport.rpt";
string repRooms = @"C:\Users\Jeff Enad\Desktop\TEST1\Cebu Hallmark Hotel Management System\Cebu Hallmark Hotel Management System\cryRooms.rpt";
public frmReport(string User)
{
InitializeComponent();
loadReport();
this.user = User;
}
首先加载水晶报告:
public void loadReport()
{
rd.Load(repRept);
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=dbCebuHallmark;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("GetAllReport", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new System.Data.DataSet();
da.Fill(ds, "REPORT");
rd.SetDataSource(ds);
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Refresh();
}
传递参数:
private void frmReport_Load(object sender, EventArgs e)
{
cmbLoadReport.SelectedIndex = 0;
rd.SetParameterValue("UserPrinted", this.user);
rd.SetParameterValue("DatePrinted", DateTime.Today.ToString("MM-dd-yyyy hh:mm tt"));
}
我用来重新加载多个水晶报告的代码:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string cryBy = "";
string loadBy = "";
string tableBy = "";
string paraBy = "";
if (cmbLoadReport.SelectedIndex == 0)
{
cryBy = repRept;
loadBy = "GetAllReport";
tableBy = "REPORT";
}
else if (cmbLoadReport.SelectedIndex == 1)
{
cryBy = repRooms;
loadBy = "GetRoom";
tableBy = "ROOM";
paraBy = "Vacant";
}
else if (cmbLoadReport.SelectedIndex == 2)
{
cryBy = repRooms;
loadBy = "GetRoom";
tableBy = "ROOM";
paraBy = "Occupied";
}
else if (cmbLoadReport.SelectedIndex == 3)
{
cryBy = repCust;
loadBy = "GetCustomer";
tableBy = "CUSTOMER";
}
rd.Load(cryBy);
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=dbCebuHallmark;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter(loadBy, con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
if (cmbLoadReport.SelectedIndex != 0 && cmbLoadReport.SelectedIndex != 3)
{
da.SelectCommand.Parameters.Add("@availability", System.Data.SqlDbType.VarChar, 50).Value = paraBy;
}
DataSet ds = new System.Data.DataSet();
da.Fill(ds, tableBy);
rd.SetDataSource(ds);
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Refresh();
}