报表中显示多个表的字段

来源:互联网 发布:零基础学编程看什么书籍 编辑:程序博客网 时间:2024/06/06 05:43

水晶报表使用经验--在报表中显示多个表的字段(通过表关联)
举个简单的例子:
员工表(员工编号? 员工姓名? 部门编号)
部门表(部门编号 部门名称)

要求是: select 员工表.员工姓名,部门表.部门姓名 from 员工表,部门表 where 员工表.部门编号=部门表.部门编号

操作步骤(列举几个比较重要 也是自己当时操作比较容易困惑的地方)
1.建xsd文件 直接拖入员工表和部门表? 不要做任何字段关联
2.建rpt文件 选择员工表和部门表后 建立链接 员工表的部门编号---〉部门表的部门编号
3.建.aspx文件 拖入报表控件
4.在.aspx.cs中建立一个DataSet,里面是两张表,名称分别是员工表、部门表(和拖入XSD的名称保持 一致)
sql语句分别为:
 select * from 员工表
 select * from 部门表

示例代码
try
   {
    
    CrystalReport1 crReportDocument;
    crReportDocument = new CrystalReport1();            
    SqlConnection conn = new SqlConnection("server=it003;database=pubs;uid=sa;pwd=");
    conn.Open(); 
    DataSet ds=new DataSet();
    SqlDataAdapter ada= new SqlDataAdapter("select * from authors where au_id like '%"+32+"%'",conn);
    ada.Fill(ds,"authors");//Fill表名要与DataSet.xsd里的表名保持一致;
    SqlDataAdapter ada1 = new SqlDataAdapter("select * from titleauthor",conn);
    ada1.Fill(ds,"titleauthor");
    conn.Close();
    crReportDocument.SetDataSource(ds);
    crystalReportViewer1.ReportSource = crReportDocument;    
    TextObject GetTextObject = crReportDocument.ReportDefinition.ReportObjects["Text3"] as TextObject;//程序修改文体对象
    GetTextObject.Text = textBox1.Text.Trim();
    crystalReportViewer1.RefreshReport();
    //GetTextObject.ObjectFormat.EnableSuppress = true; 隐藏文本对象
   }
   catch (Exception ex)
   {
    MessageBox.Show(ex.Message,"系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
    
   }