找回密码
 立即注册

QQ登录

只需一步,快速开始

kenpo

注册会员

16

主题

62

帖子

178

积分

注册会员

积分
178

活字格认证

kenpo
注册会员   /  发表于:2013-10-15 19:15  /   查看:5855  /  回复:9
用VB.NET开发pagereport,一个主画面,一个印刷画面(preview用),如果要求主画面直接打印,不显示preview画面的话,如何做到?
RUN之前无法绑定数据源,无法触发LocateDataSource事件
要是写在preview画面里,document对象打印出来一张白纸,LocateDataSource事件要到preview画面结束后才会触发

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-16 10:06:00
沙发
我想你的这个需求与这篇博客文章描述的功能非常相似,通过 ActiveReports 实现 Web 系统的报表直接打印操作
回复 使用道具 举报
kenpo
注册会员   /  发表于:2013-10-16 11:19:00
板凳
谢谢dof,这篇文章写了单个值传递,如果明细部的TABLE比较复杂,需要设置DataSource的种类是Dataset Provider.
那VB这边编辑好的datatable对象如何绑定到数据源上面去?如何生成报表打印出来?
调试中Report.Run()的时候的时候会触发LocateDataSource事件,args.Data = 编辑好的datatable对象
然后总是报:No data has been set. Please specify either a DataSet or a DataView to use
如果不Run,报表未生成,Report.Document.Printer.Print()打印就是一张白纸
(现在是用VB.NET的WINFORM来做,preview控件是activereport的viewer控件)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-16 12:24:00
地板
kenpo

你方便将你现在的测试工程发送给我调试吗,这样我可以更好的提供解决方案。

同时,关于打印操作你可以参考AR7帮助文档的这个章节:ActiveReports Developer 7 > ActiveReports Developer Guide > How To > Print Methods In ActiveReports Developer
回复 使用道具 举报
kenpo
注册会员   /  发表于:2013-10-16 13:11:00
5#
好的,我切出来做个调试程序,怎么发给你呢?请看短消息
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-16 14:44:00
6#
通过【高级编辑器】的附件功能,可以上传附件 zip rar 等,注意将原工程的 bin 和 obj 文件夹删除。
回复 使用道具 举报
kenpo
注册会员   /  发表于:2013-10-16 15:05:00
7#
做好了,请看一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-16 18:46:00
8#
主要是使用PageDocument.Print方法进行直接打印




  1. Imports GrapeCity.ActiveReports

  2. Public Class Form1

  3.     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

  4.         '创建报表
  5.         Dim rpt As GrapeCity.ActiveReports.PageReport
  6.         rpt = New GrapeCity.ActiveReports.PageReport(New System.IO.FileInfo("PageReport1.rdlx"))

  7.         '创建文档对象,并绑定数据源加载事件
  8.         Dim doc As New GrapeCity.ActiveReports.Document.PageDocument(rpt)
  9.         AddHandler doc.LocateDataSource, AddressOf mobjDocument_LocateDataSource

  10.         '打印
  11.         doc.Print(True)
  12.     End Sub

  13.     Private Sub mobjDocument_LocateDataSource(ByVal sender As Object, ByVal args As GrapeCity.ActiveReports.LocateDataSourceEventArgs)
  14.         Try
  15.             '加载数据源
  16.             Dim dt As New DataTable
  17.             dt.Columns.Add("Field1")
  18.             dt.Columns.Add("Field2")
  19.             dt.Columns.Add("Field3")
  20.             dt.Rows.Add(1, 1, 1)
  21.             dt.Rows.Add(2, 2, 2)
  22.             dt.Rows.Add(2, 2, 2)
  23.             dt.Rows.Add(2, 2, 2)
  24.             dt.Rows.Add(2, 2, 2)

  25.             args.Data = dt
  26.         Catch ex As Exception
  27.             Exit Sub
  28.         End Try
  29.     End Sub

  30. End Class
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
kenpo
注册会员   /  发表于:2013-10-17 11:56:00
9#
非常感谢dof,问题已经解决
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-10-17 12:03:00
10#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部