这段时间 接了一个活 开发使用vs2003和sql2000 后来修改报表时 总是出现错误 在网上也没有找到具体的办法
呵呵 幸不辱命 终于搞定了
贴出来供以后有需要的童鞋参考
namespace SCACLMS.NewPages
{
/// <summary>
/// EveryMonthRep 的摘要说明。
/// </summary>
public class EveryMonthRep :ReportBase // System.Web.UI.Page
{
protected System.Web.UI.WebControls.DropDownList ddlYear;
protected System.Web.UI.WebControls.DropDownList ddlMonth;
protected System.Web.UI.WebControls.Button Search;
protected System.Web.UI.WebControls.DropDownList ddlFile;
protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
protected System.Web.UI.WebControls.DropDownList Drpdept;
protected System.Web.UI.WebControls.Button btnExport;
protected CrystalReport3 repDoc =new CrystalReport3();
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
Inits();
DBinDepart();
this.CrystalReportViewer1.Visible=false;
// RptDoc = repDoc;
// SetDbLoginInfo();
}
}
/// <summary>
/// 绑定部门
/// </summary>
void DBinDepart()
{
SCACLMS.BLL.Student bll = new SCACLMS.BLL.Student();
DataSet ds= bll.GetDepartList();
DataTable dt= ds.Tables[0];
this.Drpdept.DataSource=dt;
this.Drpdept.DataValueField="DepartId";
this.Drpdept.DataTextField="Title";
this.Drpdept.DataBind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Search.Click += new System.EventHandler(this.Search_Click);
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
#region 初始化数据
private void Inits()
{
InitDdl();
// RptDoc = repDoc;
// SetDbLoginInfo();
}
private void InitDdl()
{
ddlYear.Items.Clear();
for(int i=2007;i<=2020;i++)
{
ddlYear.Items.Add(new ListItem(i.ToString(),i.ToString()));
}
ddlMonth.Items.Clear();
for (int j=1;j<=12;j++)
{
ddlMonth.Items.Add(new ListItem(j.ToString(),j.ToString()));
}
ddlYear.SelectedValue = Convert.ToString(DateTime.Now.Year);
ddlMonth.SelectedValue = Convert.ToString(DateTime.Now.Month);
}
#endregion
private void Search_Click(object sender, System.EventArgs e)
{
string StrDep=this.Drpdept.SelectedItem.Text;
int Iyear=int.Parse(this.ddlYear.SelectedItem.Text.ToString());
int IMonth=int.Parse(this.ddlMonth.SelectedItem.Text.ToString());
//显示数据
SCACLMS.BLL.Student bll = new SCACLMS.BLL.Student();
DataSet dsAll= bll.SelectEdutinaInfo(Iyear,IMonth,StrDep);
DataTable dt= dsAll.Tables[0];
if(dt.Rows.Count>0)
{
CrystalReportViewer1.Visible = true;
repDoc.SetDataSource(dt);
RptDoc = repDoc;
SetDbLoginInfo();
this.CrystalReportViewer1.ReportSource=repDoc;
CrystalReportViewer1.DisplayGroupTree = false; //树视图是可见还是隐藏左边的空白显示的比较多的处理方法
}
}
/*导出Excel word pdf 具体数据源怎么写 可以根据实际情况修改 以下情况 仅供参考*/
private void btnExport_Click(object sender, System.EventArgs e)
{
string StrDep=this.Drpdept.SelectedItem.Text;
int Iyear=int.Parse(this.ddlYear.SelectedItem.Text.ToString());
int IMonth=int.Parse(this.ddlMonth.SelectedItem.Text.ToString());
SCACLMS.BLL.Student bll = new SCACLMS.BLL.Student();
DataSet dsAll= bll.SelectEdutinaInfo(Iyear,IMonth,StrDep);
DataTable dt= dsAll.Tables[0];
if(dt.Rows.Count>0)
{
string StrGS=ddlFile.SelectedValue;
CrystalReportViewer1.DisplayGroupTree = true;
repDoc.SetDataSource(dt);
RptDoc = repDoc;
SetDbLoginInfo();
ExportReport(StrGS);
}
}
}
}
namespace SCACLMS.ReportForms
{
/// <summary>
/// ReportBase 的摘要说明。
/// </summary>
public class ReportBase: BasePage
{
private ReportDocument mDoc;
private string _DbServer = "(local)";
private string _DbUser = "sa";
private string _DBPwd = "";
private string _DbDatabase = "SY_CACLMS";
public ReportBase(): base()
{
this.Init += new EventHandler( this.basePage_Init );
this.Load += new EventHandler( this.basePage_Load );
this.PreRender += new EventHandler( this.basePage_PreRender );
}
#region 初始化事件
private void basePage_Init(object sender, EventArgs e)
{
}
private void basePage_Load(object sender, EventArgs e)
{
}
private void basePage_PreRender(object sender, EventArgs e)
{
}
#endregion
#region 报表导出
protected void ExportReport(string OptionStr)
{
ExportReport((ReportClass)RptDoc,OptionStr);
}
/// <summary>
/// 导出报表
/// </summary>
/// <param name="Report">报表</param>
/// <param name="OptionStr">导出文件类型doc,pdf,xls</param>
protected void ExportReport(ReportClass Report,string OptionStr)
{
string ExportPath;
ExportPath = Request.PhysicalApplicationPath + "Exported\\";
if (Directory.Exists(ExportPath) == false)
Directory.CreateDirectory(Request.PhysicalApplicationPath + "Exported\\");
ReportDocument crReportDocument = (ReportDocument)Report;
DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();
ExportOptions crExportOptions = crReportDocument.ExportOptions;
switch(OptionStr.ToUpper())
{
case "PDF":
crDiskFileDestinationOptions.DiskFileName = ExportPath + "PortableDoc.pdf";
crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
break;
case "DOC":
crDiskFileDestinationOptions.DiskFileName = ExportPath + "Word.doc";
crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
crExportOptions.ExportFormatType = ExportFormatType.WordForWindows;
crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
break;
case "XLS":
crDiskFileDestinationOptions.DiskFileName = ExportPath + "Excel.xls";
crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
crExportOptions.ExportFormatType = ExportFormatType.Excel;
crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
break;
}
try
{
TableLogOnInfo logInfo = GetLogInfo();
crReportDocument.Database.Tables[0].ApplyLogOnInfo(logInfo);
// Export the report
crReportDocument.Export();
crReportDocument.Close();
Response.ClearContent();
Response.ClearHeaders();
switch(OptionStr.ToUpper())
{
case "PDF":
Response.ContentType="application/pdf";
string sFileName2 = System.IO.Path.GetFileName(Request.PhysicalPath);
sFileName2 = sFileName2.Replace("aspx","pdf");
Response.AddHeader("Content-Disposition", ("attachment;Filename="+sFileName2));
Response.WriteFile(ExportPath + "PortableDoc.pdf");
break;
case "DOC":
Response.ContentType="application/msword";
string sFileName1 = System.IO.Path.GetFileName(Request.PhysicalPath);
sFileName1 = sFileName1.Replace("aspx","doc");
Response.AddHeader("Content-Disposition", ("attachment;Filename="+sFileName1));
Response.WriteFile(ExportPath + "Word.doc");
break;
case "XLS":
Response.ContentType="application/xls";
string sFileName = System.IO.Path.GetFileName(Request.PhysicalPath);
sFileName = sFileName.Replace("aspx","xls");
Response.AddHeader("Content-Disposition", ("attachment;Filename="+sFileName));
Response.WriteFile(ExportPath + "Excel.xls");
break;
}
Response.Flush();
Response.Close();
}
catch (Exception err)
{
Response.Write("<BR>");
Response.Write(err.Message.ToString());
}
}
#endregion
#region 系统设置
/// <summary>
/// 报表Doc文件
/// </summary>
public ReportDocument RptDoc
{
set
{
mDoc = value;
SetDbLoginInfo();
}
get
{
return mDoc;
}
}
/// <summary>
/// 设置登录信息
/// </summary>
protected void SetDbLoginInfo()
{
TableLogOnInfo logInfo = GetLogInfo();
RptDoc.Database.Tables[0].ApplyLogOnInfo(logInfo);
}
private TableLogOnInfo GetLogInfo()
{
GetDbPara();
//设置logOnInfo参数
TableLogOnInfo logOnInfo = new TableLogOnInfo();
logOnInfo.ConnectionInfo.ServerName = _DbServer;
logOnInfo.ConnectionInfo.DatabaseName = _DbDatabase;
logOnInfo.ConnectionInfo.UserID = _DbUser;
logOnInfo.ConnectionInfo.Password = _DBPwd;
return logOnInfo;
}
/// <summary>
/// 获取数据库相关信息
/// </summary>
private void GetDbPara()
{
string str = SCACLMS.Common.Config.connectionString;
string[] para = str.Split(';');
if (para.Length>=4)
{
foreach (string s in para)
{
if (s.IndexOf("server")==0)
{
_DbServer = s.Replace("server=","").Replace(";","");
}else
if(s.IndexOf("pwd")==0)
{
_DBPwd = s.Replace("pwd=","").Replace(";","");
}else
if (s.IndexOf("uid")==0)
{
_DbUser = s.Replace("uid=","").Replace(";","");
}else
if (s.IndexOf("database")==0)
{
_DbDatabase = s.Replace("database=","").Replace(";","");
}
}
}
}
#endregion
}
}

