CrystalDecisions.CrystalReports.Engine.ReportDocument rd=new ReportDocument();// rd.Load(@"G:\testdotnet\logistic\example.rpt");
// TableLogOnInfo logOnInfo = new TableLogOnInfo ();
//      logOnInfo = rd.Database.Tables ["S"].LogOnInfo;
// logOnInfo.ConnectionInfo.ServerName = "192.168.1.124";
// logOnInfo.ConnectionInfo.DatabaseName = "Student";
// logOnInfo.ConnectionInfo.UserID = "SA";
// logOnInfo.ConnectionInfo.Password = "sa";
// rd.Database.Tables ["S"].ApplyLogOnInfo(logOnInfo);
System.Windows.Forms.OpenFileDialog of =new OpenFileDialog();
            of.DefaultExt="*.rpt|*.rpt";
of.Filter="*.rpt|*.rpt"; if (of.ShowDialog()==DialogResult.OK  )
{   rd.Load(of.FileName);
this.Text=of.FileName;
rd.SetDatabaseLogon("sa","sa");
rd.SetDataSource(Db_Sds.Tables[0]);
CrystalDecisions.CrystalReports.Engine.TextObject to;
to=(rd.ReportDefinition.ReportObjects["Text4"]as CrystalDecisions.CrystalReports.Engine.TextObject);
to.Text="报表标题";

解决方案 »

  1.   

    不知道楼主是怎么做报表的,
    我原来用的时候是用存储过程返回的结果集填到一个dataset里面,
    然后根据“具体情况”对dataset中的结果集中数据再做相应处理,然后填到crystalReport里面去的,
    你所说的动态的改变报表的标题也可以说是“具体情况”的一种,
    比如说,DropDownList里面有两项选择,不管选哪种选择,生成的报表格式都差不多,就只有标题不一样,这个时候就可以在生成报表的button里面进行判断处理,选第一种时,把dataset中报表标题的字段生成例如“报表1”,选第二种时,设成“报表2”,然后显示时,就变化了,不知道楼主是不是这个意思,还有那个公式编辑器,是处理相关业务逻辑的,如果你不用sql,不用存储过程,在公式编辑器里面也可以处理数据,但是好像比较麻烦~