C#操作水晶报表的一些疑问和求解 100
我现在打算这样去做:首先,我使用的是VS2010的环境建立的WinForm的CR项目,数据库使用的是ODBC的数据库连接然后,我打算建立一个CR文件作为模板,模板的项都是...
我现在打算这样去做:
首先,我使用的是VS2010的环境建立的WinForm的CR项目,数据库使用的是ODBC的数据库连接
然后,我打算建立一个CR文件作为模板,模板的项都是固定好的,通过指定的SQL语句可以直接把数据推向CR内。
但是,我现在出现了各种问题和各种疑惑:
问题:
1.当CRViewer加载我的CR对象的时候就显示“未能加载数据库”
疑惑:
1.CR的setReportSource一定要是Dataset或者DataTable吗?我使用的是DataReader的数据容器.
2.CR的其他问题还没有遇到,因为到这就已经卡住了.
我想知道的:
我现在想做的之前已经写好了:通过一个Winform加载一个CR的rpt文件,并且通过SQL语句可以将数据推送至rpt内,但是我卡在了未能加载数据库这里,希望CR的宗师给我提供一个完整的操作方法,我使用的环境是VS2010和CR for VS2010(当然Runtime之类的都安装了)
对于长篇大套粘贴或者转载的就不麻烦您了!谢谢! 展开
首先,我使用的是VS2010的环境建立的WinForm的CR项目,数据库使用的是ODBC的数据库连接
然后,我打算建立一个CR文件作为模板,模板的项都是固定好的,通过指定的SQL语句可以直接把数据推向CR内。
但是,我现在出现了各种问题和各种疑惑:
问题:
1.当CRViewer加载我的CR对象的时候就显示“未能加载数据库”
疑惑:
1.CR的setReportSource一定要是Dataset或者DataTable吗?我使用的是DataReader的数据容器.
2.CR的其他问题还没有遇到,因为到这就已经卡住了.
我想知道的:
我现在想做的之前已经写好了:通过一个Winform加载一个CR的rpt文件,并且通过SQL语句可以将数据推送至rpt内,但是我卡在了未能加载数据库这里,希望CR的宗师给我提供一个完整的操作方法,我使用的环境是VS2010和CR for VS2010(当然Runtime之类的都安装了)
对于长篇大套粘贴或者转载的就不麻烦您了!谢谢! 展开
4个回答
展开全部
这么说吧,水晶报表压根不好用,我们宁愿用微软的。
一般如果你动手能力比较强的话 那就用Winform+Panl直接自己画一个
微软的报表是要设置数据源的,就是你所说的DataSet,再加载数据的时候你要去更新初始设置的DataSet,当报表有了DataSet后才建立报表框架,这时候你也可以向他传递参数,看一下我写的报表类里面的代码:
//显示报表类
private void Baobiao(ReportViewer r,string ming,DataSet ds,string lujing)
{
//这里处理商标图片
r.LocalReport.EnableExternalImages = true;
ReportParameter[] image = new ReportParameter[1];
string path = "file:///" + @lujing; //图片地址
image[0] = new ReportParameter("商标", path); //image1必须和报表参数一致
r.LocalReport.SetParameters(image);
r.LocalReport.Refresh();
if (ming == "8RND4RNDQR") //如果是二维码
{
//初始化数据保存二维码
BarTu();
//设置参数
ReportParameter[] rp = new ReportParameter[4];
rp[0] = new ReportParameter("shangjia", changming);
rp[1] = new ReportParameter("Tel", rexian);
rp[2] = new ReportParameter("dizhi", dizhi);
rp[3] = new ReportParameter("wangzhi", wangzhi);
r.LocalReport.SetParameters(new ReportParameter[] { rp[0], rp[1], rp[2], rp[3] });
r.LocalReport.Refresh();
}
//这里处理报表
r.LocalReport.ReportPath = Application.StartupPath + "/" + ming + ".rdlc";
r.LocalReport.ReportEmbeddedResource = ming + ".rdlc";
//设置打印布局模式,显示物理页面大小
r.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
//缩放模式为百分比,以300%方式显示
r.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent;
r.ZoomPercent = 300;
r.LocalReport.DataSources.Clear();
r.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DBDataSet_下单表", ds.Tables[0]));
r.RefreshReport();
}
看到没,前提条件DBDataSet_下单表我是随手建立的,建立好了后,随便你怎么滴,把他删除就行了,FormLoad事件也不要加载,资源里面把数据源一并剔除。
之所以要DataSet是因为控件原因,巨阵工具是要数据源的,才能阶梯性显示
你可以不管他怎么设置dataset,但是如果要更新DATASET方式去更新字段,那表里面字段名要跟新的表字段名最起码要统一,如果不统一也没关系,只是麻烦点,你要传递参数。
设置参数的时候要允许他为空,报表区域要去关联参数
如上图,我是把路径值写在商标字段里,图片Value可以是路径名,加载报表是后就自动加载图片去了。
做好这些设计工作过后,把项目里面已经设计好的报表文件,全部复制到启动目录bin里面,然后用相对路径方法加载他,多余的数据源啊,数据库文件一并可以删除,完全用代码来操作
展开全部
水晶报表肯定是绑定DataSet或者DataTable数据缓存,不明白你为何用DataReader。如果一定要用DataReader可以把结果放在一张表里,然后再绑定到水晶报表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c#水晶报表用过,感觉操作太复杂,对新手来说有点勉强,现在改用finereport,它操作比较简单,适合新手用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DataReader 行不行 没研究过, 我都是用Dataset 做的 把表字段 直接拖报表里面 setReportSource 绑定数据集 就可以了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询