Загрузка ListView из Б.Д.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DmB
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 02.11.2003 (Вс) 9:15

Загрузка ListView из Б.Д.

Сообщение DmB » 24.12.2004 (Пт) 15:13

1.В таблице Базы Данных порядка 10 000 записей, вот код загрузки
можно ли ускорить? Или надо убирать все красивости вроде иконок и
цвета шрифта?

Код: Выделить всё
Private Sub LoadLV()
Dim Item As ListItem
Dim sSQL As String
Dim His As Integer

ListView.ListItems.Clear

Set rs = New ADODB.Recordset
sSQL="SELECT * from Tabl ORDER BY id"
rs.CursorLocation = adUseClient
rs.Open sSQL, con, adOpenStatic, adLockReadOnly

Do Until rs.EOF
Set Item = ListView.ListItems.Add(, , rs!id)
'rs!id поле счётчик
'rs!tf поле Boolean

Select Case rs!tf
  Case True
     Item.SmallIcon = 1
     His = His + 1
     'переменная His считает положительные значения
   Case False
     Item.ForeColor = &HC0&
     Item.SmallIcon = 2
End Select

rs.MoveNext
Loop
rs.Close

End Sub

2. При команде .EnsureVisible запись оказывается последней видимой, нельзя ли как-то поднять её на середину ListView?

Заранее спасибо за советы, и всех с Н.Г.! Удачи!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 24.12.2004 (Пт) 15:19

можно ускорить:

Код: Выделить всё
dim TotalCount as long
....
TotalCount=rs.RecordCount
for i=0 to TotalCount-1
    ....
    i=i+1
    rs.Movenext
next


это вместо твоего цикла, чтобы не проверять каждый раз EOF
и выключи перерисовку листвью, а в конце процедуры сделай прорисовку

DmB
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 02.11.2003 (Вс) 9:15

Сообщение DmB » 25.12.2004 (Сб) 13:43

Спасибо, буду пробовать

DmB
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 02.11.2003 (Вс) 9:15

Сообщение DmB » 30.12.2004 (Чт) 16:39

Чисто субъективно почти никакой разницы, может быть у кого есть другое решение этой проблемы, а то загрузка под 30 сек. не очень радует.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 31.12.2004 (Пт) 14:17

10000 записей за полминуты? Поверь мне, это нормально. Если клиент хочет одновременно получать доступ к такому количеству инфы, то ему придется подождать...

double
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 11.05.2004 (Вт) 10:56

Сообщение double » 31.12.2004 (Пт) 18:24

В свое время была такая же проблема... Перепробовал кучу методов но ни чего не помогло. В итоге просто перешел на True TBGrid.
А грид можешь выбрать любой просто мне этот больше понравился.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

    TopList