我用vb写的程序,datagrid分页显示,最后一页不知道怎么处理?

jayaigg 2010-10-12 11:48:16
我用vb写的程序,datagrid分页显示,最后一页不知道怎么处理? 当记录数不是nPageSize (每页显示的纪录)的整数倍的时候,就出现错误了,该怎么写语句修复啊??热心的人帮帮
...全文
160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LHMLHM123 2012-07-13
  • 打赏
  • 举报
回复

出错处理,直接跳到绑定就可以显示不满页面剩下的记录了
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
有问题找BAIDU 2011-07-21
  • 打赏
  • 举报
回复
感觉是因为adoPrimaryRS 中数据不足于使lcount = npagesize
当最后个数据读完后,程序因为FOR语句关系仍会从adoPrimaryRS中读数据
当那时adoPrimaryRS已为空,所以报错
有问题找BAIDU 2011-07-21
  • 打赏
  • 举报
回复
是到最后一页 objrs!时间 = adoPrimaryRS!时间 报错么

如果是,可以在objrs.AddNew前放句
if not adoPrimaryRS.eof then
.......
......
......
adoPrimaryRS.movenext
end if
MAFUWAN15 2010-10-12
  • 打赏
  • 举报
回复
'自定义分页过程
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分页的,意思一样的吧
在最后一页的时候,一定要判断是否到了记录尾要退出
jayaigg 2010-10-12
  • 打赏
  • 举报
回复
大家都给点意见啊!!
jayaigg 2010-10-12
  • 打赏
  • 举报
回复
这是我的程序代码:
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
jayaigg 2010-10-12
  • 打赏
  • 举报
回复
望版主关注下啊,,不胜感谢!!!
jayaigg 2010-10-12
  • 打赏
  • 举报
回复
楼上的,好像和我想的不一样吧,我的DATAGRID到记录尾,最后一页如果记录不满,就出错,我要它显示出来,不是退出啊!可能是我理解不了你的思路吧,,还是谢谢!!
有没有人说说DATAGRID的怎么弄啊?

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧