您的位置:逆风者 VB 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:72 来源:本站原创

本文章共2448字,分2页,当前第1页,快速翻页:
 

原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?boardid=6&id=164547

'------------------------------------------------------------------------------------------------------------------------
逆风编程精品
'函数名:RsFillFlex2
'功能:用记录集填充表格
'创建日期:2007-8-22
'更新日期:2007-8-22
'注意:从第1列开始填充数据,第0列自动生成一个序号列
'由于多出一个序号列,所以表格的列数比记录集的字段数多1
'---------------------------------------------------------------
Public Function RsFillFlex2(strcaption As String, _
grd As MSFlexGrid, _
rs As adodb.Recordset, _
Optional alignFlag As Integer = 0, _
Optional showZeroFlag As Integer = 0, _
Optional Rows_Fixed As Integer = 1, _
Optional TableHead As Integer = 1) As Boolean
'本函数特别要求,对于含的小数点的数值型数据,要根据数据表中的结构显示小数点个数
'功能:将记录添充到表格中
'参数一:表头格式
'参数二:表格控件名称
'参数三:记录集
'参数四:表示是否指定"列对齐方式",为1根据记录集的字段类型来设置,为0根据表格的formatstring设置
'参数五:是否显示数字0,为0不显示,为1要显示
'参数六:固定行数,默认为1
'参数七:表头所占的行数,默认为1 (该参数有何意义?)
'好象记录集必须是客户端游标才行,服务器端游标记录数不好取

Dim i As Long, j As Long, strField As String 'strField用于存放字段内容
Dim vnttmp As Variant '临时存放每个单元格内容[要能存放各种类型数据,故为variant型]
Dim rsCols As Long'记录集的字段数
Dim grdCols As Long '表格的列数

on Error GoTo errhandler


'记录集未打开,则返回错误
If rs.State <> adStateOpen Then
MsgBox "没有可供显示的记录集!", 32, "提示"
RsFillFlex2 = False
Exit Function
End If

'首先判断记录集是否有内容[如果无内容要清除表格原有内容],因为记录集正常打开的情况下,也可能一条记录都没有
If rs.BOF = True And rs.eof = True Then
grd.Rows = grd.FixedRows'清除除表头的所有内容
grd.Rows = Rows_Fixed 1 '无记录时,显示一个空白行
RsFillFlex2 = True
Exit Function
End If

'注意:不能设置固定行,否则会报错[设置固定行时,除非固定行比行数小一,否则报错]

'以下代码运行的前提是:已有记录
With grd
.Rows = .FixedRows'将行数设置成固定行的行数
.Clear'清除原有内容[重要]
.FormatString = strcaption'格式化表头,确定列数
grdCols = .Cols '取表格列数
rsCols = rs.Fields.Count'记录集字段数
'判断传来的表头与记录集的字段数是否一致
If grdCols <> rsCols 1 Then
'MsgBox grdcols
'MsgBox rscols
MsgBox "记录集字段数与表格列数不匹配,表格列数应比记录集列数多1,第0列为序号列!", 16, "提示"
RsFillFlex2 = False
Exit Function
End If

'下面进行表格填充[只有在真正填充之前,才能设置成不重绘,否则容易花屏]
.Redraw = False'不重绘,目的是提高速度

'确定表格总行数[因为存在表头,故表数行数应等于记录条数加一]
.Rows = rs.RecordCount TableHead '该设定决定表格有多少行显示数据,很重要

'根据参数决定是否设置各列对齐方式,为1时不按formatstring设置,按记录集字段类型设置
If alignFlag = 1 Then
For j = 1 To rs.Fields.Count
Select Case rs.Fields(j - 1).Type
Case adDecimal, adDouble, adSingle, adNumeric, adBigInt, adInteger, adTinyInt, adSmallInt
'设定为右对齐
.ColAlignment(j) = 7
Case Else
'设定为左对齐
.ColAlignment(j) = 1
End Select
Next
End If

rs.MoveFirst
For i = 1 To rs.RecordCount '循环显示记录,有多少条记录则循环多少次
.TextMatrix(i, 0) = i '第0列显示序号
For j = 1 To rs.Fields.Count'循环处理各个列
 

本文章更多内容1 - 2 - 下一页>>
相关文章

VB Access开发的登录程序
VB实用编程两例
Whois 示例程序
用VB6编写强力的windows隐藏引擎
用VB创建Windows快捷方式
移动文件到回收站
用VB编写简单的时钟程序(有时、分、秒针转
VB 从零开始编外挂(十二)
FSO对象模型在VB中的应用
动态改变屏幕设置
用VB实现“ICQ”式的启动欢迎画面
VB邮件检查程序
自己的IE——用VB制作浏览器
基于Visual Basic 6的网络程序设计
用BASIC语言设计Windows风格的用户接口
用WinSock设计Chat程序
VB中API菜單編輯器的實現````
如何在VB中实现绘图区的大十字光标
用VB实现象Windows记事本的一些功能
在VB中实现文件上传

相关评论


本文章所属分类:首页 VB

  热门关键字: