我在窗体里生成了dataset1,然后添加的水晶报表,使用报表专家,在数据中选择项目数据,再选择ado.net数据集,来做的报表,代码不分是这样的:
this.Cursor = Cursors.WaitCursor;
CrystalDecisions.CrystalReports.Engine.ReportDocument crpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
crpt.Load(@"F:\accessnumber1\accessnumber\Cry.rpt");
//Ds是dataSet1
crpt.SetDataSource(this.Ds);
this.crystalReportViewer1.ReportSource =crpt;
this.Cursor = Cursors.Arrow;
问题1:提示说,在form1下并为定义dataset1。
2:为什么每次运行窗体老是跳出一个数据库登陆窗体。
请大家帮帮我,谢谢。
this.Cursor = Cursors.WaitCursor;
CrystalDecisions.CrystalReports.Engine.ReportDocument crpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
crpt.Load(@"F:\accessnumber1\accessnumber\Cry.rpt");
//Ds是dataSet1
crpt.SetDataSource(this.Ds);
this.crystalReportViewer1.ReportSource =crpt;
this.Cursor = Cursors.Arrow;
问题1:提示说,在form1下并为定义dataset1。
2:为什么每次运行窗体老是跳出一个数据库登陆窗体。
请大家帮帮我,谢谢。
1。这是第一个Form其中得到需要打印的DataSet数据源,将它以及做好的报表的路径等传送给第二个Form
private void btPreview_Click(object sender, System.EventArgs e)
{
PrintOrPreViewReport(false);}
private void PrintOrPreViewReport(bool bPrint)
{
if(dsPatient.Tables[0].Rows.Count<=0)
{
MessageBox.Show("当前没有可供打印的记录,请先选择条件并执行查询动作之后再打印。",this.Text);
return;
}
//下面这行代码在你设计报表之前生成XML文件,你可以用该文件作为数据源来设计报表,之后这行代码就可以注释掉,以后在程序运行时将得到的DataSet作为数据源传给报表就可以,而且没有需要密码登录的问题
//dsPatient.WriteXml(SysInfo.sReportPath+@"YSYY.xml",System.Data.XmlWriteMode.WriteSchema);
string[] sParametername =new string[3]{"companyname","datefrom","dateto"};
string[] sParametervalue =new string[3]{"","",""};
sParametervalue[0]=SysInfo.sConame;
sParametervalue[1]=(dtDateFr.Checked)?dtDateFr.Value.ToShortDateString():"";
sParametervalue[2]=(dtDateTo.Checked)?dtDateTo.Value.ToShortDateString():"";
new frmReport(bPrint,"BRYY.RPT",sParametername,sParametervalue,dsPatient).ShowDialog();}2。第二个Form中有一个只有crystalReportViewer1控件
private bool bPrint=false;
private string sReportname="";
private string[] sParametername;
private object[] sParametervalue;
private DataSet dsReport;
private void frmReport_Load(object sender, System.EventArgs e)
{
if(bPrint)this.Opacity =0;
else this.WindowState =System.Windows.Forms.FormWindowState.Maximized;
CrystalDecisions.CrystalReports.Engine.ReportDocument doc=new CrystalDecisions.CrystalReports.Engine.ReportDocument();
doc.Load(SysInfo.sReportPath+sReportname);
if(dsReport != null)doc.SetDataSource(dsReport.Tables[0]);
if(sReportname.StartsWith("CaseReport"))
{
doc.OpenSubreport("CaseSubReport1").SetDataSource(dsReport.Tables["procsk"]);
doc.OpenSubreport("CaseSubReport2").SetDataSource(dsReport.Tables["pathdrug"]);
} if(sParametername!=null)
{
for(int i=0;i<sParametername.Length;i++)
{
try
{
doc.SetParameterValue(sParametername[i],sParametervalue[i]);
}
catch(Exception ee)
{
MessageBox.Show("字段名称:"+sParametername[i]+"。"+ee.Message);
}
}
}
this.crystalReportViewer1.ReportSource=doc;
this.crystalReportViewer1.RefreshReport();
if(bPrint)
{
this.crystalReportViewer1.PrintReport();
this.Close();
}
}private void btExit_Click(object sender, System.EventArgs e)
{
this.Close();
this.Dispose();
}
}