⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用ado怎样分批显示一个表中的数据.txt

📁 VB技巧问答10000例 VB技巧问答10000例
💻 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 + -