设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 7479|回复: 26
打印 上一主题 下一主题

[报表] Access免费的完美报表的讲述帖(正式开讲)

[复制链接]

点击这里给我发消息

跳转到指定楼层
#
发表于 2013-10-28 18:45:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 真主 于 2013-10-29 08:08 编辑

众所周之,Access的报表功能实在不如人意,如:用户无法自定义报表、报表多格式导出功能差、无分级合并功能等等,特别是自定义纸张时,换一台打印机都要在MDB设好后转MBE
论坛上大家都在找,但真正有效对报表进行处理的真的好少
当然,本帖一定要经过我们的管理员(tmtony)点头后我才会正式开始写,因为tmtony兄也有个要卖钱的报表插件啊,我可不想与他对着干tmtony兄,如你有异议请删帖或私信给我,如无异议我明天正式开讲,谢谢!从4楼开始讲解
设计界面

打印界面




本帖子中包含更多资源

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

x

评分

参与人数 1经验 +30 金钱 +30 技术 +2 V币 +5 收起 理由
t小宝 + 30 + 30 + 2 + 5 (技术)原创精品课程、录像、代码、教程(.

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

推荐
 楼主| 发表于 2013-11-1 15:34:52 | 只看该作者

其实VB中需要写的代码也就一点点,我最初来想发布一个成品就行了,毕竟授人鱼比授人以渔要简单的多,但考虑到大家的应用,所以还是授渔吧,所以需要的朋友可以耐心看看
回复 支持 1 反对 0

使用道具 举报

点击这里给我发消息

25#
发表于 2015-1-28 16:48:59 | 只看该作者
感谢楼主分享心得,友情再顶一下
24#
发表于 2015-1-11 14:21:57 | 只看该作者
呵呵呵呵呵呵呵呵哈哈哈
23#
发表于 2014-10-11 20:55:45 | 只看该作者
aaa
回复

使用道具 举报

22#
发表于 2013-11-11 15:12:49 | 只看该作者
真主老师,能否给条炖好的鱼吃呀!即例子,谢谢

点击这里给我发消息

21#
发表于 2013-11-11 11:04:36 | 只看该作者
楼主请继续,不要停

点击这里给我发消息

20#
 楼主| 发表于 2013-11-1 18:59:45 | 只看该作者
本帖最后由 真主 于 2013-11-1 19:00 编辑

上次讲了VB调用报表的基本方法,可他无法实现动态调用,接下来我们要完成几个功能:
1、控件大小与窗体一样
2、在当前目录下建一个Reports文件夹,将报表文件统一放在里面,
3、在当前目录下建一个tool文件夹,将动态调用的报表名与报表数据源路径存入在tool文件夹中的print.txt文件夹中(后续在access打印时,动态向print.txt文件中写入,从而实现动态应用)
4、在窗体上新增两个Label控件,分别为Label1与Label2,另加一个框:Shape1
VB的最终代码如下:
  1. Dim WithEvents Report As grproLibCtl.GridppReport

  2. Private Sub Form_Load()

  3. Me.GRPrintViewer1.Width = Me.Width - Shape1.Width
  4. Me.GRPrintViewer1.Height = Me.Height - Shape1.Height

  5. Label1.Caption = ""
  6. Va_FullName1 = App.Path & "\tools\Print.txt"
  7. '====创建文件
  8. If Dir(Va_FullName1, vbDirectory) = "" Then
  9.     Set fs = CreateObject("Scripting.FileSystemObject")
  10.     Set D = fs.CreateTextFile(Va_FullName1, True)
  11. End If
  12. '====信息读取
  13. Dim Va_i1 As Integer

  14. '读取文本文件信息,获取Server信息
  15. '----------------------------------------------------
  16. Va_lngHandle1 = FreeFile(0)                   '获得文件的句柄
  17.    
  18. Open Va_FullName1 For Input As Va_lngHandle1     'For后面的参数表示以何种方式打开文件,Input是读取,Output是覆盖写入,Append是追加写入
  19. Do While Not EOF(Va_lngHandle1)              '循环直到文件尾
  20.     Line Input #Va_lngHandle1, strLine       '每次读取一行存放在strLine变量中
  21.     If Va_i1 = 0 Then Va_A1 = strLine
  22.     If Va_i1 = 1 Then Va_A2 = strLine
  23.     Va_i1 = Va_i1 + 1
  24. Loop                '显示得到的全部分内容
  25. Close Va_lngHandle1     '关闭文件
  26. '====Server信息读取
  27. Label1.Caption = Va_A1
  28. Label2.Caption = Va_A2

  29. '改为全路径
  30. If Mid(App.Path, Len(App.Path), 1) = "" Then
  31.     Label2.Caption = App.Path & "Reports" & Label2.Caption
  32. '    Label1.Caption = App.Path & Label1.Caption
  33. Else
  34.     Label2.Caption = App.Path & "\Reports" & Label2.Caption
  35. '    Label1.Caption = App.Path & "" & Label1.Caption
  36. End If


  37. '==========================================================
  38.     '创建报表对象
  39.     Set Report = New grproLibCtl.GridppReport

  40.     '载入报表模板文件,必须保证 Grid++Report 的安装目录在‘C:\Grid++Report 4.5’下,
  41.     '关于动态设置报表路径与数据绑定参数请参考其它例子程序
  42. '    Report.LoadFromFile ("C:\Grid++Report 5.0\Samples\Reports\1a.简单表格.grf")
  43. '    Report.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Grid++Report 5.0\Samples\Data\Northwind.mdb"
  44.     Report.LoadFromFile (Label2.Caption)
  45.     Report.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Label1.Caption & ";password="   '设定参数集合的数据源
  46.     Report.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Label1.Caption & ";password="  '设定明细网格的数据源
  47.     '设置报表查询显示器控件的关联报表对象
  48.     GRPrintViewer1.Report = Report

  49.     '启动报表运行
  50.     GRPrintViewer1.Start
  51.    
  52. End Sub

  53. Private Sub Form_Resize()
  54. Me.GRPrintViewer1.Width = Me.Width - Shape1.Width
  55. Me.GRPrintViewer1.Height = Me.Height - Shape1.Height
  56. End Sub
复制代码

点击这里给我发消息

19#
发表于 2013-10-31 14:58:49 | 只看该作者
还要VB真麻烦

点击这里给我发消息

18#
 楼主| 发表于 2013-10-31 09:16:03 | 只看该作者
本帖最后由 真主 于 2013-10-31 09:27 编辑

上次讲完了报表的设计,今天我们开始讲如何让报表能正常打印,大家都知道Access的VBA只是VB的一部份,很多VB支持的插件,access都无法支持,所以我们只好曲线救国{:soso_e120:}
1、打开VB6






2、在左单部件栏上点右键,选择“部件(O)...”


3、在部件窗体上点“浏览”后跳出添加Activex控件的窗体,文件类型选择所有文件后在grid++repert安装目录下选择“gregn50.dll”文件,并点打开

4、这里在部件窗体中出现了该插件


5、选择“grprintviewer”,在“form1”窗体上画出来


6、双击“Form1”进入“代码窗口”


7、写入以下代码
  1.     '声明
  2.      Dim WithEvents Report As grproLibCtl.GridppReport    '创建报表对象
  3.     '在Private Sub Form_Load()写入以下内容

  4.     Set Report = New grproLibCtl.GridppReport

  5.     '载入报表模板文件,必须保证 Grid++Report 的安装目录在‘C:\Grid++Report 4.5’下,
  6.     Report.LoadFromFile ("C:\Grid++Report 5.0\Samples\Reports\1a.简单表格.grf")
  7.     '设定明细网格的数据源
  8.     Report.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Grid++Report 5.0\Samples\Data\Northwind.mdb"
  9.     '设定参数集合的数据源
  10.     Report.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Grid++Report 5.0\Samples\Data\Northwind.mdb"   

  11.     '设置报表查询显示器控件的关联报表对象
  12.     GRPrintViewer1.Report = Report

  13.     '启动报表运行
  14.     GRPrintViewer1.Start
复制代码
现在你基本的代码已写完成,下面进行美化和动态调用的工作



本帖子中包含更多资源

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

x
17#
发表于 2013-10-31 08:42:53 | 只看该作者
收藏了,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-2 19:38 , Processed in 0.105247 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表