请问该如何实现这种功能呢?
问题一:该如何让 username 这个行的高变得更高一点呢?问题二: 如果想让本翻页功能增加如果到1页,那么“上一页”就变成为灰色,如果是最后一页,那么"下一页"就变成灰色,请问该如何写代码?我想写成以下的,但是不行,就屏蔽了。
'测试未通过。
'If lPage = 1 Then
' cmdPrevious.Enabled = True
' End If
' If lPage = adoPrimaryRS.PageCount Then
' cmdNext.Enabled = False
' End If
问题三:如果这种方式写翻页,会出现翻到最后一页时,再往下翻就会提示:"bof" 或者 "eof" 中有一个为真,或者当前的记录已经删除,所需的操作要求一个当前的记录,请问该如何改进呢?
------------------------------ 以下是全部代码 ------------------
Option Explicit
Dim conn As ADODB.Connection
Dim lCurrentPage As Long
Private Sub cmdNext_Click()
lCurrentPage = lCurrentPage + 1
Call Loadcontrol(lCurrentPage)
End Sub
Private Sub cmdPrevious_Click()
If lCurrentPage > 1 Then
lCurrentPage = lCurrentPage - 1
Call Loadcontrol(lCurrentPage)
End If
End Sub
Private Sub Form_Load()
Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "../../DBbase/Admin.mdb;"
lCurrentPage = 1
Call Loadcontrol(lCurrentPage)
End Sub
Private Sub Loadcontrol(lPage As Long)
Dim adoPrimaryRS As ADODB.Recordset
Dim lPageCount As Long
Dim nPageSize As Integer
Dim lCount As Long
'每页显示的纪录
nPageSize = 10
Set adoPrimaryRS = New ADODB.Recordset
adoPrimaryRS.Open "select [username],[position],Depot,tel,mobile,email from message ", 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 lCount
'打开记录集
objrs.Open
'将指定记录数循环添加到objrs中
For lCount = 1 To nPageSize
objrs.AddNew
objrs!username = adoPrimaryRS!username
objrs!position = adoPrimaryRS!position
objrs!Depot = adoPrimaryRS!Depot
objrs!Tel = adoPrimaryRS!Tel
objrs!mobile = adoPrimaryRS!mobile
objrs!Email = adoPrimaryRS!Email
adoPrimaryRS.MoveNext
Next
'绑定
Set DataGrid1.DataSource = objrs
'在文本框显示页数
txtPage = lPage & "/" & adoPrimaryRS.PageCount
txtPage.Text = txtPage
'测试未通过。
'If lPage = 1 Then
' cmdPrevious.Enabled = True
' End If
' If lPage = adoPrimaryRS.PageCount Then
' cmdNext.Enabled = False
' End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Not conn Is Nothing Then
conn.Close
End If
Set conn = Nothing
End Sub
'文本框中输入页数,回车跳转到指定位置
Private Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer)
lCurrentPage = Val(txtPage.Text)
If lCurrentPage < 1 Then lCurrentPage = 1
If Not IsNumeric(lCurrentPage) Then
lCurrentPage = 1
End If
Call Loadcontrol(lCurrentPage)
End Sub
--------------------编程问答-------------------- 最好的方法就是不要用这个DATAGRID,改用Flexgrid
补充:VB , 数据库(包含打印,安装,报表)