在VB中使用动态分组报表

原创 2004年03月20日 14:41:00

    在使用VB自带的报表过程中,我遇到了处理动态分组报表的问题。一般要使用分组报表要在VB中建立一个DataEnvironment,并在其中建立数据库联接和命令对象,在命令对象中设置分组字段,最后将这些分组字段加入到报表中。但是这种方法只能适应静态的数据源,当遇到数据表中的字段不固定,或数据表不能预先知道的情况时,这种方法就无能为力了。经过查阅各种资料,发现我们可以通过使用Data Shaping来动态创建分组信息。下面就详细介绍一下如何动态创建分组信息,并应用于VB报表。

       要使用Data Shaping,程序必须使用ActiveX Data Object (ADO)连接数据库,解决问题的关键是使用Data Shaping的驱动程序代替通常使用的各种OLE DB的驱动程序,它的用法跟使用其它驱动程序类似,对于已有的数据访问代码不用作任何修改,只是简单的修改一下连接代码就可以支持Data Shaping了。具体做法如下:

       将连接参数中的   

Provider设置成"MSDataShape"

ConnectionString  = "Provider=MSDataShape;Data Provider=通常的驱动程序;Data Source=…;其它的参数"

然后就可以和平常一样进行数据连接和各种数据操作了。如此连接的数据源出了具有用普通方法的所有特性以外,同时具有了我们即将使用的Data Shaping功能,下面就可以建立自己的分组信息了:

将用于打开记录集的SQL语句写成如下形式:

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

SHAPE {select 字段1, 字段2, 字段3,…, 字段n from 现有的表} AS 新的名称1

COMPUTE新的名称1 AS新的名称2 BY 分组字段1, 分组字段2,…, 分组字段n

 

上面的语句中,需要注意的是分组字段必须同时在Select 中出现,否则运行时将报错。用该SQL语句打开的记录集中包含若干个字段,它们是:新的名称2、分组字段1-n。在使用时,将打开的记录集rs作为报表的DataSource,在报表的分组部分可以直接且只能使用分组字段1-n以及各种统计函数,在正文中使用字段1-n时,应将对应编辑框的DataMenber设置为新的名称<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2”,具体请参考以下语句

MyReport.Sections("GroupHeader").Controls("Text1").DataField =”分组字段1”

 

MyReport.Sections("GroupFooter").Controls("Function1").DataMember = "新的名称2"

MyReport.Sections("GroupFooter").Controls("Function1").DataField = "字段1"

 

MyReport.Sections("PageContent").Controls("Text2").DataMember = "新的名称2"

MyReport.Sections("PageContent").Controls("Text2").DataField =”字段1”

 

按照以上的方法就可以对带有分组的报表进行动态数据绑定了,这对于那些操作临时表的情况十分有用,因为临时表是无法用设计器设计分组的。

关于Data Shaping的详细介绍可以去参考MSDN在线资源,在一般情况下我们可以用设计器去设计一个类似的结构,然后查看VB设计器生成的代码,这样就可以套用我们自己表了。

VB中使用报表控件(一)

在做机房收费系统时,有两个功能日结账单和周结账单中用到了报表控件,下面介绍一下如何使用报表控件。 首先,需要下载一个报表控件并安装,安装完成后在VB--工程--引用中选择Grid++Report E...
  • kanglix1an
  • kanglix1an
  • 2012年08月28日 11:10
  • 6320

vb 报表示例

  • 2007年05月12日 17:27
  • 18KB
  • 下载

VB6中用DataReport做报表

                           VB6中用DataReport做报表首先介绍一下DataReport对象的几个常用属性。一是DataSource,用于设置一个数据源,通过该数据源...
  • cyz1980
  • cyz1980
  • 2006年04月13日 16:23
  • 1469

rdlc 报表 分组排序

1、rdlc 报表文件的RowNumber()函数,显示的是行序号。()中可以填写nothing,也可以填写分组名称来进行行号显示。 2、自定义分组:       (1)、右击报表文件,“报表属性...
  • mutou965175859
  • mutou965175859
  • 2012年08月16日 16:21
  • 5118

用VB做报表(二)

在上一篇博客用VB做报表(一)当中我们介绍了用锐浪报表设计器做一个简单报表的过程,本篇将揭开如何使用VB连接报表的神秘面纱。     首先,安装Grid++Report 5.0报表设计器,具体过程如...
  • wlccomeon
  • wlccomeon
  • 2012年12月14日 21:18
  • 5537

在vb 中使用的报表控件,非常好用

  • 2010年01月14日 15:40
  • 4KB
  • 下载

vb 数据报表经典实例

  • 2011年04月02日 12:10
  • 73KB
  • 下载

润乾报表中API动态合并格,连续显示行号

制作这样的报表,如下图:   报表中第一列,第二列是分组函数,当某行第二格的值与第一格的值相同且只有一个值时(如“国家安全”这行),则将这两个格子合并,并将下行的“小计”行隐藏。在第4列,将显示的...
  • Alice_656
  • Alice_656
  • 2016年12月12日 17:16
  • 638

VB动态产生创建sql文件

1) VB生成sql文件 VB为指定的表sqlName,动态产生创建触发器gps_insert的sql文件,输出到指定目录文件sqlFile中。Public Sub CreateSQLScriptFi...
  • black_ben
  • black_ben
  • 2006年02月07日 19:54
  • 1457

第七章 BIRT分组报表

7.1 分组的建立,插入,删除 我们先构建报表,空白模板,示例数据库和sql查询数据源,数据集setOrders,如下 select CLASSICMODELS.CUSTOMERS.CUSTOM...
  • github_22022001
  • github_22022001
  • 2015年01月13日 10:55
  • 1189
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在VB中使用动态分组报表
举报原因:
原因补充:

(最多只允许输入30个字)