C#操作水晶报表的一些疑问和求解
发布网友
发布时间:2022-05-01 19:45
我来回答
共4个回答
热心网友
时间:2022-04-12 00:38
这么说吧,水晶报表压根不好用,我们宁愿用微软的。
一般如果你动手能力比较强的话 那就用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("di", di);
rp[3] = new ReportParameter("wang", wang);
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里面,然后用相对路径方法加载他,多余的数据源啊,数据库文件一并可以删除,完全用代码来操作
热心网友
时间:2022-04-12 01:56
水晶报表肯定是绑定DataSet或者DataTable数据缓存,不明白你为何用DataReader。如果一定要用DataReader可以把结果放在一张表里,然后再绑定到水晶报表。
热心网友
时间:2022-04-12 03:30
c#水晶报表用过,感觉操作太复杂,对新手来说有点勉强,现在改用finereport,它操作比较简单,适合新手用的。
热心网友
时间:2022-04-12 05:22
DataReader 行不行 没研究过, 我都是用Dataset 做的 把表字段 直接拖报表里面 setReportSource 绑定数据集 就可以了!