水晶报表的打印预览,是在visual studio2008中做的,C#WinForm做的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水晶报表的打印预览,是在visual studio2008中做的,C#WinForm做的相关的知识,希望对你有一定的参考价值。

想要在打印之前进行预览,可是预览的时候明明在windows窗体中是有数据的,可是在预览里面没有数据,就是用这个预览的PrintPreviewDialog view = new PrintPreviewDialog();不知道少了哪些东西,因为是刚接触水晶报表这东西,很多都不懂,郁闷啊,谁能帮帮忙,网上搜遍了都找不到答案,只有求助各位大侠了,很急啊!!!还有就是在预览之前进行打印的页面设置,虽然可以调用设置窗口进行设置,但是实际打印时并没有按设置的样式进行打印,哪位能帮忙解决下,我把我仅有的40分都给你了,刚注册的号,就这点分了。

水晶报表是个比较简单的东西,你所说的预览有没有数据那是.net平台为了体现你编辑的报表样式而给你的预览,具体数据是根据你用报表专家选择的数据库中的数据而显示的,你可以这样理解。
1.你把你的预览和将来的数据要分开考虑,因为在水晶报表里主要编辑的是格式而不是数据,也就是说,你可以在水晶报表里指定格式,同时为每个将来显示数据的部分指定字段名,具体的数据源,你可以先放一边。你可以利用自己建立的,这里关键的是你要把格式和数据源的字段名弄清楚了。
2.如果你设定好了报表格式后,你可以添加一个新窗体,在里面放置一个crystalreportview控件,这个是专门用来预览水晶报表用的。
假设该预览用新窗体名称为ReportView,crystalreportview类型控件名为 CryView
主窗体名称为MainForm,打印按钮名称为 btn_Print
水晶报表名称为 CryReport.rpt
则点击打印按钮后,调用ReportView窗体,代码如下
ReportView myRp= newReportView(ReportSqlStr);
myRp.ShowDialog();
上面的代入参数ReportSqlStr是你检索数据所用的sql语句
在ReportView的load事件里写上
...
ds = myConn.GetData("tmpTable", tmpSql);
CryReport myrpt = new CryReport();
myrpt.SetDataSource(ds);
CryView.ReportSource = myrpt;
CryView.RefreshReport();

以上tmpSql是从上一个窗体传过来的sql语句,ds是一个dataset
myconn是一个对象,执行tmpsql语句返回dataset,你也可以自己写。
tmpTable是一个自定义的ds里面的表名,
注意,tmptable里面的字段名必须包含报表里编辑时的所有的字段名,否则就没有数据显示,如果报表编辑时在某个位置指定了A字段,而在tmptable里没有A字段,则报表就那块地方就会空白。
具体打印和格式在CryView控件里都有,不需要另外写代码。
参考技术A 这个可能是设置的问题吧,你可以参考一下finereport的打印设置,总的来说finereport的打印这一块还是做的不错的,不管是产品,还是文档。

页面设置:页面设置中所设的横纵向、纸张大小、页边距等是报表在客户端浏览器中预览的效果,与打印效果无关,页面设置属性可参考页面设置文档;
打印首选项:打印机首选项中所设的横纵向、纸张大小决定了最终打印效果。
FineReport中只有Applet打印与PDF打印支持将页面设置传入到打印首选项中,即在打印时打印机会按照页面设置进行打印,而Flash打印不支持将页面设置传递给打印机首选项,必须手动设置纸张大小及方向。
参考技术B 建议楼主用GDI+自己画报表。。。

Visual Basic 2010 Express 中的免费水晶报表

【中文标题】Visual Basic 2010 Express 中的免费水晶报表【英文标题】:Crystal Report Free in Visual Basic 2010 Express 【发布时间】:2011-11-11 17:04:39 【问题描述】:

有没有办法在 Visual Basic 2010 Express 上安装 Crystall Report Free?我需要在一些 Win-Form 应用程序上创建和打印一些报告。如果不可能,有没有其他免费的解决方案?

【问题讨论】:

亲爱的投反对票的人,请解释为什么你投反对票。在那之前,我会投票取消它。 【参考方案1】:

Crystal Reports 仅适用于标准版或更高版本的 Visual Studio。 另外值得注意的是,速成版不支持报告。

从here 和here 获得的信息

【讨论】:

【参考方案2】:

我知道这可能是一个为时已晚的答案,但是按照this example,我可以通过 Windows7 Web 和桌面上的 Visual Studio Express 2012 上的报表查看器显示 SQL Server 报表生成器文件(.rdl 重命名为 .rdlc)。请务必阅读链接帖子中关于在本地系统上从何处获取 DLL 的底部 cmets。

【讨论】:

【参考方案3】:

这是你可以使用的代码:

报告文件为crystalreport1

在附有水晶报表的表单上创建一个命令按钮。双击写如下:

Imports CrystqlDecisions.CrystalReports.Engine
Public class Form1
         Private sub Button1_click(ByVal sender As System.object, ByVal e As Sysyem.EventArgs) Handles Button1.click
             Dim CrystRpt as New ReportDocument
             CristRpt.Load('crystal report path\Crystalreport1')
             CystalReportViewer1.ReportSource=CristRpt
             CrystalReportViewer1.Refresh()
         End sub
end class

【讨论】:

以上是关于水晶报表的打印预览,是在visual studio2008中做的,C#WinForm做的的主要内容,如果未能解决你的问题,请参考以下文章

asp.net点击一个按钮 直接出来水晶报表pdf预览了

在 Visual Studio 2010(64 位操作系统)中无法使用水晶报告

Visual Studio 2019 和水晶报告的问题

vs asp.net水晶报表打印时无法显示条码

Visual Basic 2010 Express 中的免费水晶报表

如何在 Visual Studio 2010 中使用 Crystal Reports 创建报表