我用vb写的程序,datagrid分页显示,最后一页不知道怎么处理?
我用vb写的程序,datagrid分页显示,最后一页不知道怎么处理? 当记录数不是nPageSize (每页显示的纪录)的整数倍的时候,就出现错误了,该怎么写语句修复啊??热心的人帮帮 --------------------编程问答-------------------- --------------------编程问答-------------------- 大家都给点意见啊!!--------------------编程问答-------------------- '自定义分页过程
Private Sub Controllv(lCurrentPage As Integer)
Dim PageCount As Integer
Rs4.PageSize = 5
PageCount = Rs4.PageCount
If Rs4.RecordCount = 0 Then Exit Sub
If lCurrentPage > PageCount Then
CurrentPage = PageCount
End If
Rs4.AbsolutePage = CurrentPage
Dim Litm As ListItem
ListView1.ListItems.Clear
'Rs4.MoveFirst
For i = 1 To Rs4.PageSize
Set Litm = ListView1.ListItems.Add()
Litm.Text = Rs4.Fields(1).Value
Litm.SubItems(1) = myR.Getoperate(Rs4.Fields(2).Value)
Litm.SubItems(2) = Rs4.Fields(3).Value
Rs4.MoveNext
If Rs4.EOF = True Then Exit For
Next
Text1.Text = CurrentPage & "/" & PageCount & "页"
End Sub
这是LISTVIEW分页的,意思一样的吧
在最后一页的时候,一定要判断是否到了记录尾要退出 --------------------编程问答-------------------- 楼上的,好像和我想的不一样吧,我的DATAGRID到记录尾,最后一页如果记录不满,就出错,我要它显示出来,不是退出啊!可能是我理解不了你的思路吧,,还是谢谢!!
有没有人说说DATAGRID的怎么弄啊? --------------------编程问答-------------------- 望版主关注下啊,,不胜感谢!!! --------------------编程问答-------------------- 这是我的程序代码:
Dim adoPrimaryRS As ADODB.Recordset
Dim lPageCount As Long
Dim nPageSize As Integer
Dim lCount As Long
nPageSize = 3
Set adoPrimaryRS = New ADODB.Recordset
adoPrimaryRS.Open "select * from 奖励违规表", conn, adOpenStatic, adLockOptimistic
adoPrimaryRS.PageSize = nPageSize
lPageCount = adoPrimaryRS.PageCount
If lCurrentPage > lPageCount Then
lCurrentPage = lPageCount
End If
adoPrimaryRS.AbsolutePage = lCurrentPage
Dim objrs As New ADODB.Recordset
For lCount = 0 To adoPrimaryRS.Fields.Count - 1
objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize
Next
objrs.Open
For lCount = 1 To nPageSize
objrs.AddNew
objrs!时间 = adoPrimaryRS!时间
objrs!姓名 = adoPrimaryRS!姓名
objrs!奖励事项 = adoPrimaryRS!奖励事项
objrs!违规事项 = adoPrimaryRS!违规事项
adoPrimaryRS.MoveNext
Next
Set DataGrid1.DataSource = objrs --------------------编程问答-------------------- 是到最后一页 objrs!时间 = adoPrimaryRS!时间 报错么
如果是,可以在objrs.AddNew前放句
if not adoPrimaryRS.eof then
.......
......
......
adoPrimaryRS.movenext
end if
--------------------编程问答-------------------- 感觉是因为adoPrimaryRS 中数据不足于使lcount = npagesize
当最后个数据读完后,程序因为FOR语句关系仍会从adoPrimaryRS中读数据
当那时adoPrimaryRS已为空,所以报错 --------------------编程问答--------------------
出错处理,直接跳到绑定就可以显示不满页面剩下的记录了
objrs.Open
On Error GoTo err
For lCount = 1 To nPageSize
objrs.AddNew
objrs!时间 = adoPrimaryRS!时间
objrs!姓名 = adoPrimaryRS!姓名
objrs!奖励事项 = adoPrimaryRS!奖励事项
objrs!违规事项 = adoPrimaryRS!违规事项
adoPrimaryRS.MoveNext
Next
err:
''绑定
Set DataGrid1.DataSource = objrs
补充:VB , 数据库(包含打印,安装,报表)