Страницы: 1
RSS
тормозит listbox
 
Добрый день, форумчане.
Подключаюсь к sql базе для осуществления поиска, получаю рекордсет и вывожу его в листбокс.
Странность в следующем: если листбокс большого размера (width, height), то список в 100 позиций выводит 10-15 секунд.
Если листбокс маленький, то на это уходят доли секунды. Это мне кажется странным, т.к. кол-во данных одинакого в обоих случаях, по сути только размер поля для просмотра разный.
Код
ListBox1.Clear
 'ListBox1.Column() = rs.GetRows
 
 rs.MoveFirst
 Do Until rs.EOF
 ListBox1.AddItem (rs(0))
 For n = 1 To rs.Fields.Count - 1
 ListBox1.List(ListBox1.ListCount - 1, n) = rs(n)
 Next
 
 ' ListBox1.List(ListBox1.ListCount - 1, rs.Fields.Count) = get_Last_Price(rs(0))
 rs.MoveNext
 Loop
 
Лучше сначала загнать рекордсет в массив, а затем в одно касание - из массива в листбокс.
Макет кода:
Код
  Dim a(), r&, c&
  rs.MoveLast
  ReDim a(1 To rs.RecordCount, 1 To rs.Fields.Count)
  
  rs.MoveFirst
  For r = 1 To UBound(a)
    For c = 1 To UBound(a, 2)
      a(r, c) = rs(c - 1)
    Next
    rs.MoveNext
  Next
  ListBox1.ColumnCount = UBound(a, 2)
  ListBox1.List = a()
Изменено: ZVI - 12.07.2013 22:46:20
 
я бы так сделал, (только файл сохраните на физический диск)
Изменено: R Dmitry - 13.07.2013 01:03:47
Спасибо
 
Цитата
ZVI пишет:
загнать рекордсет в массив, а затем в одно касание - из массива в листбокс.
Спасибо, помогло
recordcount не работал (выдавал -1), я заменил на UBound(rs.GetRows, 2) + 1
Изменено: Oleg - 15.07.2013 10:45:18
Страницы: 1
Читают тему
Наверх