📄 用ado怎样分批显示一个表中的数据.txt
字号:
要 ADO分 批 显 示 数 据 , 就 必 须 要 用 ADO代 码 而 不 用 ADO控 件 。 再 就 是 你 最 好 不 要 用 MSHFlexGrid之 类 的 控 件 , 因 为 这 类 高 级 控 件 智 能 性 太 低 , 建 议 你 用 ListView控 件 , 然 后 利 用 循 环 添 加 。 下 面 为 我 试 写 的 一 段 程 序 , 因 为 时 间 匆 忙 , 只 是 实 现 了 其 大 致 功 能 , 希 望 你 能 有 所 启 发 。
代 码 示 例 :
Option Explicit
Dim ac As New ADODB.Connection
Dim ar As New ADODB.Recordset
Private Const database_path="******************" '//////数 据 库 路 径
Private Const database_name = "******" '//////数 据 库 名
Private Const user_id = "*****" '//////用 户 名 称
Private Const password = "****" '//////密 码
Private Const table_name = "****" '//////表 名
Dim i, j As Integer
Dim itmX As ListItem
Dim r_cnt As Long '//////记 录 数
Dim cnt As Integer
Dim now_seat As Long
Private Sub cmd_next_Click()
If cnt < 199 Then Exit Sub
ListView.ListItems.Clear
cnt = 199
If r_cnt < now_seat + 199 Then cnt = r_cnt - now_seat - 2
Call nxt_200
End Sub
Private Sub cmd_Prevoius_Click()
If now_seat <= 200 Then Exit Sub
ListView.ListItems.Clear
cnt = 199
Call pre_200
End Sub
Private Sub Cmd_add_Click()
'//////////////添 加 指 定 数 目 的 记 录
Dim i As Long
On Error Resume Next
With ar
For i = 1 To CInt(Text1)
.AddNew
!ID = i
!Content = "this is only for test!"
.Update
Next i
End With
End Sub
Private Sub Cmd_clear_Click()
'///////////////清 空 所 有 记 录
With ar
If .EOF Then Exit Sub
.MoveFirst
Do While Not .EOF
.Delete
.MoveNext
Loop
End With
End Sub
Private Sub Form_Load()
ListView.View = lvwReport
ac.ConnectionString = "Data Source=" & App.Path & "/" & database_name & ";User ID=" & user_id & _
";Jet OLEDB:Database Password=" & password
ac.CommandTimeout = 100
ac.Provider = "Microsoft.Jet.OLEDB.3.51"
ac.Open
ar.Open table_name, ac, adOpenKeyset, adLockOptimistic, adCmdTable
With ar
For i = 0 To .Fields.count - 1 '////////////添 加 字 段 到 表 头
ListView.ColumnHeaders.Add , , .Fields(i).Name, ListView.Width / .Fields.count
Next i
r_cnt = .RecordCount
If r_cnt >= 200 Then
cnt = 199
Else
cnt = r_cnt - 1
End If
End With
now_seat = 1
Call nxt_200
End Sub
Private Sub Form_Unload(Cancel As Integer)
ar.Close
ac.Close
End Sub
Private Sub nxt_200()
With ar
For i = now_seat To now_seat + cnt
Set itmX = ListView.ListItems.Add(, , .Fields(0).Value)
For j = 1 To .Fields.count - 1
itmX.SubItems(j) = .Fields(j).Value
Next j
Me.Show
.MoveNext
Next i
End With
now_seat = now_seat + cnt
End Sub
Private Sub pre_200()
With ar
For i = 1 To 400
.MovePrevious
Next i
For i = now_seat To now_seat + cnt
Set itmX = ListView.ListItems.Add(, , .Fields(0).Value)
For j = 1 To .Fields.count - 1
itmX.SubItems(j) = .Fields(j).Value
Next j
.MoveNext
Next i
End With
now_seat = now_seat - cnt
End Sub
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -