社区
多媒体
帖子详情
在VB6中,报表如何调用recordset
kenxu
2000-08-22 11:12:00
我用查询的方法返回一个recordset,如何利用该recordset生成一个报表。
...全文
163
2
打赏
收藏
在VB6中,报表如何调用recordset
我用查询的方法返回一个recordset,如何利用该recordset生成一个报表。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
playyuer
2000-08-22
打赏
举报
回复
VB 6之数据报表使用技巧
于溪
VB 6.0专业版和企业版中的数据报表设计器与数据环境设计器是数据访问的新内容。MSDN 所提供的Prjnwind.vbp 示例工程在设计阶段(Design Time)就已将DataEnvironment设为DataReport的数据源,并将打印格式也设好,这种做法不太利于程序的通用性。当然,我们也可以对DataEnvironment编程,在运行阶段(Run Time)控制数据源。其实,DataReport可以完全脱离DataEnvironment,而打印由动态SQL生成的Recordset。
实现代码如下:
Private Sub DataReport_Initialize()
…
Dim adoConnectionX As New ADODB.Connection
Dim adoRecordsetX As New ADODB.Recordset
adoConnectionX.Open″Provider=Microsoft.Jet.OLEDB.3.51;Persist Security
Info=False;Data Source=″ & App.Path & ″\Xxx.mdb″
adoRecordsetX.Open ″Select * From表名″, adoConnectionX
Set DataReportX.DataSource = adoRecordsetX
′设置 DataReport 的数据源
…
由VB 6 所提供的DataReport.Sections.Item(Index).Controls.Item(Index)...这样的语法不太利于编程控制数据报表设计器的专用控件的位置、大小等各种属性。但是,我们可以编程根据控件所在区域(Section)和所属类别等将它们分成若干集合(Collection),然后通过控制集合的元素来控制其所代表的控件。当然,在设计阶段我们要将足够多的控件绘制到DataReport上备用。实现的主要部分代码如下:
…
′根据控件所在区域(Section)和所属类别分集合(Collection)
Dim RHSec4—RptLbl—Collection As New Collection
…
′页标头(PageHeader)区域 Shape(RptShape) 控件集合
Dim PHSec2—RptShp—Collection As New Collection
…
′细节(Detail)区域 TextBox(RptTextBox) 控件集合
Dim DSec1—RptTxt—Collection As New Collection
…
Dim Ctl As Object
…
For Each Ctl In Me.Sections.Item(″Section1″).Controls ′Section1
Select Case TypeName(Ctl)
Case ″RptLabel″
DSec1—RptLbl—Collection.Add Ctl
Ctl.Caption = ″"
Case ″RptShape″
DSec1—RptShp—Collection.Add Ctl
Case ″RptTextBox″
Ctl.DataField = adoRecordset.Fields.Item(0).Name
′先将所有TextBox(RptTextBox) 控件绑定到某一字段,否则报错!
DSec1—RptTxt—Collection.Add Ctl
End Select
Ctl.Visible = False
Next Ctl
…
′以下通过控制集合的元素来准确有效的控制这些元素所代表的控件。
Dim i As Integer
Dim bFmt As StdDataFormat
′定义布尔(Boolean)型字段的数据格式
Set bFmt = New StdDataFormat
bFmt.Type = fmtBoolean
bFmt.TrueValue = ″是″
bFmt.FalseValue = ″否″
For i = 0 To 5
′只打印前几个字段,Shape(RptShape) 控件用来显示单元格,页标头(PageHeader)区域:显示列表头(Caption)
With PHSec2—RptShp—Collection.Item(i + 1) ′单元格
.Visible = True
If i = 0 Then
.Left = 0
Else
.Left = PHSec2—RptShp—Collection.Item(i).Left + PHSec2—RptShp—Collection.Item(i).Width
End If
.Top = 0
.Height = 400
′可根据字体设 单位:缇字体的高度(单位:缇)可使用 Form、PictureBox 的TextHeight 方法或 API 获得
.Width = 1500
′这里可根据实际情况用数组分别设置各列的列宽
End With
With PHSec2—RptLbl—Collection.Item(i + 1) ′列表头标题(Caption)
.Left = PHSec2—RptShp—Collection.Item(i + 1).Left + 100
.Top = PHSec2—RptShp—Collection.Item(i + 1).Top + 100
.Height = PHSec2—RptShp—Collection.Item(i + 1).Height - 180
.Width = PHSec2—RptShp—Collection.Item(i + 1).Width - 200
.Caption = adoRecordsetX.Fields.Item(i).Name
.Alignment = rptJustifyCenter
.Visible = True
End With
′细节(Detail)区域显示:
With DSec1—RptShp—Collection.Item(i + 1) ′单元格
If i = 0 Then
DSec1—RptShp—Collection.Item(i + 1).Left = 0
Else
.Left = DSec1—RptShp—Collection.Item(i).Left + DSec1—RptShp—Collection.Item(i).Width
End If
.Top = 0
.Height = PHSec2—RptShp—Collection.Item(i + 1).Height
.Width = PHSec2—RptShp—Collection.Item(i + 1).Width
.Visible = True
End With
With DSec1—RptTxt—Collection.Item(i + 1) ′数据
.Height = DSec1—RptShp—Collection.Item(i + 1).Height - 180
.Left = DSec1—RptShp—Collection.Item(i + 1).Left + 100
.Top = DSec1—RptShp—Collection.Item(i + 1).Top + 100
.Width = DSec1—RptShp—Collection.Item(i + 1).Width - 200
.DataField = adoRecordsetX.Fields.Item(i).Name ′重新绑定字段
Select Case adoRecordsetX.Fields.Item(i).Type ′可根据字段数据类型设置数据格式
Case adBigInt, adInteger, adSmallInt
.DataFormat.Format = ″###,##0″
′数字
.Alignment = rptJustifyRight
Case adBoolean
Set .DataFormat = bFmt
′布尔型字段设为自定义格式
.Alignment = rptJustifyCenter
Case adCurrency
.DataFormat.Format = ″###,##0.00″
′货币
.Alignment = rptJustifyRight
Case adDate, adDBDate, adDBTimeStamp
.DataFormat.Format = ″Long Date″
′日期、时间
.Alignment = rptJustifyRight
Case Else ′其它,如:文本等
.Alignment = rptJustifyLeft
End Select
.Visible = True
End With
Next i
DataReport1.Sections.Item(″Section2″).Height = 400
DataReport1.Sections.Item(″Section1″).Height = 400
…
End Sub
该方案在PWin 9.X 和VB 6.0下通过。
如果要打印分级(层)Recordset ,还要在Datareport 上增加分组标头和分组注脚区等,并根据控件的具体功能、用途为其定义各类控件集合,设计出更复杂的报表。
sleepsheep
2000-08-22
打赏
举报
回复
在datareport 的Initialize事件中加入
set datareport.datasourse=rs
软件工程工资管理系统
同时,系统还提供功能完善的API,可以在应用程序
中
调用
这些API来实现与数据库系统的连接以及相关数据的操作。sp3是该系统的一个版本号,只有sp4以上的SQL 2000系统才能够支持纯ODBC连接方式。
Vb6
.0功能强大的应用...
VB6
总结VII之水晶
报表
1
在水晶
报表
程序
中
1.创建新
报表
,选择“Standard”类型,导入需要用到的数据库表格,点击“Done”2.进入第2个tab“Links”,可以删除一些不需要的表格之间的link,点击第3个tab“Fields”3.从左边的“Database Fields...
在vb
中
如何应用
报表
要在vb
中
应用
报表
,首先必须加载新的控件。工程——》部件,然后在控件里面勾选Grid++report engine5.0 type library,应用即可,这时在工具箱
中
多了两个控件,添加GRDisplayViewer控件。 接下来就是代码啦: ...
VB6
.0
调用
Excel制作任意表格
在VB
中
制作
报表
一般来讲有三种方法: 1、直接使用
VB6
.0
中
自带的Data Report 来做,这种方法有很大的局限性,对于比较规则的
报表
,但对于比较复杂的
报表
,比如说一张
报表
,上部分是人员的工资,下部分是人员的各日的...
在VB
中
使用水晶
报表
总结
水晶
报表
(Crystal Report)是业内最专业、功能最强的
报表
系统,它除了...除了开发新程序外,在工作
中
我们常需要接触到很多较早的软件系统
报表
功能升级的需求,如果能结合水晶
报表
这一强大的工具,往往能事半功倍。 V
多媒体
809
社区成员
8,275
社区内容
发帖
与我相关
我的任务
多媒体
VB 多媒体
复制链接
扫一扫
分享
社区描述
VB 多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章