- Код: Выделить всё
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 секунд...
Как можно оптимизировать процесс чтения и записи, если количество элементов в списке каждый раз меняется?