vb mysql 表格显示,VB数据库之分页显示记录

分页显示记录正如我们在大学里选课时遇到的,每页显示多少科目,共有多少页。其实,这里主要用到的是Data

Grid控件。接下来我来介绍一下关于它的知识。

177350626_1_20191206100658503

一.原理:将原记录页的数据复制到一个新的记录集中,再将其绑定到Data Grid控件上,这样就能显示原记录页中的所有数据了!正如,我们要将母鸡下的蛋放进篮子里,我们吃的时候要从篮子里拿一样!

这里的新纪录集就相当于篮子!

二、关于Data Grid控件

pagesize:一个记录中包含记录的个数

pagecount:返回一个记录集的记录页总数

absolutepage:返回当前记录页编号

三、编写流程

177350626_2_20191206100658722

四、关于分页显示部分代码解析

public sub showdata(byval intpage as integer)

'实现分页显示记录功能

dim objdatasource as new recordset 'objdatasource

’相当于原理中的篮子,即新的记录集

dim intpagecount as integer,intrecord as integer

'intpagecount表示共有多少条记录

’intrecord表示第几条记录

for intrecord = 0 to objrs.field.count-1

'表示记录的字段数

objdataresource.fields.appendobjrs.fields(intrecord).name ,advarchar,objrs.fields (inttecord).definedsize'插入字段名append为插入方法

'objrs相当于原记录集

next

......

end sub

*******************

本文链接:https://blog.csdn.net/dzweather/article/details/8884387

做法:

1、取得原始的整个记录集rs1,并对其设置分页大小。

2、创建一个新记录集rs2,把rs1上相应页面上的记录复制到rs2上。

3、在表格上显示rs2,这样就是一个页面的记录集。

'20130504  白话魔法师

Dim cn      As New ADODB.Connection

Dim rs1     As New ADODB.Recordset '原始记录集

Dim rs2     As New ADODB.Recordset '每个页面的记录集

Dim intPage As Integer '当前页数

Private Sub Command1_Click()

Dim s As String

If intPage < rs1.PageCount Then  '指定页面,每点一下就是下一个页面

intPage = intPage + 1

Else

MsgBox "已经是最后一页"

End If

Call rsPage(rs1, intPage)  '调用分页显示

End Sub

Private Sub Form_Load()

intPage = 0

hfg.FixedCols = 0

hfg.Height = hfg.RowHeight(0) * 6 + 290 + 20

hfg.Width = hfg.CellWidth * 6 + 30 * 6

cn.Open "Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=book;Data Source=ZHENG"

rs1.Open "select * from 书名", cn, adOpenKeyset, adLockOptimistic, adCmdText

rs1.PageSize = 6

End Sub

Private Sub rsPage(ByRef rsFirst As Recordset, ByVal intPageNumber As Integer)

Dim i As Integer, j As Integer

For i = 0 To rsFirst.Fields.Count - 1 '创建新表rs2,加入相关字段

rs2.Fields.Append rsFirst.Fields(i).Name, rsFirst.Fields(i).Type, rsFirst.Fields(i).DefinedSize, rsFirst.Fields(i).Attributes

Next i

rs2.Open

rsFirst.AbsolutePage = intPageNumber

For i = 1 To rsFirst.PageSize  '把相应页的数据复制到新表rs2中

rs2.AddNew

For j = 0 To rsFirst.Fields.Count - 1

rs2.Fields(j) = rsFirst.Fields(j)

Next j

rs2.Update

rsFirst.MoveNext

If rsFirst.EOF Then Exit For    '判断是否到结尾,因为最后一面,可能不是整个大小

Next i

Set hfg.DataSource = rs2

rs2.Close

End Sub

————————————————

版权声明:本文为CSDN博主「dzweather」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/dzweather/article/details/8884387

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值