- Код: Выделить всё
- Private Sub Form_Load()
 Dim conADO As ADODB.Connection
 Set conADO = New ADODB.Connection
 conADO.ConnectionString = "provider=Microsoft.JET.OLEDB.4.0;" & "data source=" & App.Path & "\db.mdb"
 conADO.Open
 Dim rs As ADODB.Recordset
 Set rs = conADO.Execute("SELECT * FROM table")
 Dim oItem As ListItem
 Do While Not rs.EOF
 Set oItem = ListView.ListItems.Add(, , rs!one)
 oItem.SubItems(1) = rs!two
 oItem.SubItems(2) = rs!three
 oItem.SubItems(3) = rs!four
 rs.MoveNext
 Loop
 rs.Close
 conADO.Close
 Set oItem = Nothing
 Set rs = Nothing
 Set conADO = Nothing
 End Sub
При завершении работы происходит сохранение данных:
- Код: Выделить всё
- Private Sub Form_Unload(Cancel As Integer)
 Set conADO = New ADODB.Connection
 conADO.ConnectionString = "provider=Microsoft.JET.OLEDB.4.0;" & "data source=" & App.Path & "\db.mdb"
 conADO.Open
 conADO.Execute "DELETE FROM [table]", False
 Dim oItem As ListItem
 For Each oItem In ListView.ListItems
 conADO.Execute "INSERT INTO table ([one], [two], [three], [four]) values('" & oItem & "', '" & oItem.SubItems(1) & "', '" & oItem.SubItems(2) & "', '" & oItem.SubItems(3) & "')"
 Next oItem
 conADO.Close
 Set conADO = Nothing
 End Sub
Ну так вот, если в списке будет около 10000 записей, тогда чтение займет 8-10 секунд, а сохранение данных - 35-40 секунд...
Как можно оптимизировать процесс чтения и записи, если количество элементов в списке каждый раз меняется?



