在DataSet中有2个表:ZhiGong表(职工)和BuMen表(部门)
ZhiGong表字段:Code,cName,BMcID (义:编号,姓名,部门ID)
BuMen表字段:BMcID,BMcName (义:部门ID,部门名称)
ZhiGong.BMcID与BuMen.BMcID字段在DataSet中左外部关联起来了。
希望设计一个RDLC报表,打印结果如下:
职工资料表
职工编号|职工姓名|部门名称注:不允许采用“SELECT ZhiGong.Code, ZhiGong.cName, BuMen.BMcName FROM ZhiGong LEFT OUTER JOIN BuMen ON ZhiGong.BMcID = BuMen.BMcID”语句合并为1个表!
我用代码reportViewer1.LocalReport.DataSources.Add(rds);填充了数据,但预览结果并没有实现关联效果。
请问要如何正确设计这种RDLC报表?谢谢!
ZhiGong表字段:Code,cName,BMcID (义:编号,姓名,部门ID)
BuMen表字段:BMcID,BMcName (义:部门ID,部门名称)
ZhiGong.BMcID与BuMen.BMcID字段在DataSet中左外部关联起来了。
希望设计一个RDLC报表,打印结果如下:
职工资料表
职工编号|职工姓名|部门名称注:不允许采用“SELECT ZhiGong.Code, ZhiGong.cName, BuMen.BMcName FROM ZhiGong LEFT OUTER JOIN BuMen ON ZhiGong.BMcID = BuMen.BMcID”语句合并为1个表!
我用代码reportViewer1.LocalReport.DataSources.Add(rds);填充了数据,但预览结果并没有实现关联效果。
请问要如何正确设计这种RDLC报表?谢谢!
不管怎么样 如果要按匹配的员工信息和部门信息输出的话 就要联表查询
不联表查询就要 取两个table的数据做遍历 性能就惨不忍睹了
Form窗口用于新增、删除、编辑资料,窗口工具栏上有一个“预览”按钮,预览时直接传递DataSet给RDLC报表,无需重新检索数据。并且Form窗口上的数据可由用户任意查询过滤,预览时也只可打印查询过滤后的数据。
所以需要这样设计RDLC报表。
看来你还没看懂题目,在DataSet数据集中有2表,这2个表由ZhiGong.BMcID与BuMen.BMcID字段相关联,传递数据后,预览时发现“部门名称”并没有关联到正确的值。
如果1个表那就简单了,谁都会做。
当然这种在大量数据时可能效率低些。
如何才可以实现这种高效率的方法,难道RDLC报表不允许2个表关联取值?在DataSet中是可以连线关联的呀。
http://blog.csdn.net/chuangxin/archive/2009/04/11/4064462.aspx
DataTable dt = new DataTable();
dt.Columns.Add("职工编号",Type.GetType("System.String"));
dt.Columns.Add("职工姓名",Type.GetType("System.String"));
dt.Columns.Add("部门名称",Type.GetType("System.String"));DataRow newRow;
foreach(DataRow row in dtZhigong.Rows)
{
newRow = dt.NewRow();
newRow["职工编号"] = row["职工编号"];
newRow["职工姓名"] = row["职工姓名"];
//再根据dtZhigong,dtBumen来找到部门名称
...
dt.Rows.Add(newRow);
}ReportDataSource rds = new ReportDataSource("RDLC中数据源的名称",dt);
reportViewer1.LocalReport.DataSources.Add(rds);
所以,在服务端你可以直接用sql语句来实现“关联数据”的获取,如果你放弃这个,那么就在客户端手动处理吧。
CS代码里
数据集文件的名称 rds = 已有的dataset
reportViewer1.LocalReport.DataSources.Add(rds);
我设计RDLC报表时的DataSet里面也是2个表,有进行外部关联,然后分别将2个表要打印的字段拖到同1个“表控件”里的,但是对2个表填充数据后,“部门名称”字段没有正确关联取到对应的值。
reportViewer1.LocalReport.DataSources.Add(rt2),
reportViewer1.LocalReport.DataSources.Add(rt3),