powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ограничен ли Listbox по количеству выводимых строк?
13 сообщений из 13, страница 1 из 1
Ограничен ли Listbox по количеству выводимых строк?
    #36517534
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А у листбокса есть ограничение по количеству строк? Загрузил в него 34000 записей и теперь его Listcount возврашает -31812 ))) что может быть?
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36517572
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubekА у листбокса есть ограничение по количеству строк? Загрузил в него 34000 записей и теперь его Listcount возврашает -31812 ))) что может быть?

Индекс листбокса имеет тип Integer
Integer variables are stored as 16-bit (2-byte) numbers ranging in value from -32,768 to 32,767

то есть после числа 32768 он уходит в область отрицательных чисел
Если попытаетесь засунуть 65536 записей - будет overflow
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36517594
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Ясно. Значит пока еще можно слепить формулу и манипулировать данными?
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36517614
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubekShocker.Pro,

Ясно. Значит пока еще можно слепить формулу и манипулировать данными?

Плохо себе представляю.

А еще плохо себе представляю, зачем понадобилось столько грузить в листбокс. Обычно манипуляции большим объемом данных решаются иначе: страничным пролистыванием, фильтрами....
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36517631
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Обычно манипуляции большим объемом данных решаются иначе: страничным пролистыванием, фильтрами....

А это как?

Спасибо!
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36517726
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что как?

пример страничного пролистывания
все 12 тыщ топиков не выводятся на один экран

Фильтр - это фильтр. Выводится не все, а только то, что соответствует критериям.
например

Как частный случай - категоризация:
пример
слева дерево, справа топик
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36517760
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае ДЛЯ ПОЛЬЗОВАТЕЛЯ наличие 30 тыщ строк в листбоке - бесполезная функция сама по себе. Ибо он все равно не сможет там толком ничего найти и выбрать.
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36517974
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
В итоге раздел магазина закончил, спасибо!

Выводить все непроданные номера из БД в листбокс надо, чтобы их продать.Точнее чтобы продавец видел, какой диапазон продать. Приложил скриншот раздела продажи. При выботе оператора связи выходят только его номера в листбокс.
Можешь еще посмотреть нижеследующий код продажи? Тут если продаешь более 500 номеров за раз, то идет задержка (надо ждать итога). Может посоветуешь, как его оптимизировать для производительности?

Private Sub cmdApprove_Click()
If Adodc1.Recordset.RecordCount <> 0 Then ' проверить БД на пустоту
Adodc1.Recordset.MoveFirst
If cmbDiler.Text <> "" And txtPrice.Text <> "" And lstSoldSIMs.ListCount <> 0 _
Or chkCash.Value = Checked Or chkNoCash.Value = Checked Then

For j = 0 To lstSoldSIMs.ListCount
Adodc1.Recordset.MoveFirst
For i = 0 To Adodc1.Recordset.RecordCount - 1
If Trim(Adodc1.Recordset("num")) = Val(lstSoldSIMs.List(j)) Then
Adodc1.Recordset("diler") = cmbDiler.Text
Adodc1.Recordset("datesold") = Date
Adodc1.Recordset("price") = txtPrice
Adodc1.Recordset("status") = "1"
'проверка вида оплать (полная, либо долг)
If chkCash.Value = Checked Then
Adodc1.Recordset("nodebt") = 1
ElseIf chkNoCash.Value = Checked Then
Adodc1.Recordset("fulldebt") = 1
End If
'конец проверки вида оплать (полная, либо долг)
Exit For
End If
Adodc1.Recordset.MoveNext
Next i
Next j
MsgBox "Покупка произведена успешно."
lstSoldSIMs.Clear
Else
MsgBox "Пожалуйста, заполните все данные."
End If
End If ' конец проверки БД на пустоту
End Sub

Заранее спасибо!
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36518096
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно было бы уже и научится пользоваться тэгом оформления кода....

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private Sub cmdApprove_Click()
If Adodc1.Recordset.RecordCount <>  0  Then ' проверить БД на пустоту
    Adodc1.Recordset.MoveFirst
If cmbDiler.Text <> "" And txtPrice.Text <> "" And lstSoldSIMs.ListCount <>  0  _
Or chkCash.Value = Checked Or chkNoCash.Value = Checked Then

For j =  0  To lstSoldSIMs.ListCount
    Adodc1.Recordset.MoveFirst
For i =  0  To Adodc1.Recordset.RecordCount -  1 
If Trim(Adodc1.Recordset("num")) = Val(lstSoldSIMs.List(j)) Then
    Adodc1.Recordset("diler") = cmbDiler.Text
    Adodc1.Recordset("datesold") = Date
    Adodc1.Recordset("price") = txtPrice
    Adodc1.Recordset("status") = "1"
        'проверка вида оплать (полная, либо долг)
        If chkCash.Value = Checked Then
            Adodc1.Recordset("nodebt") =  1 
        ElseIf chkNoCash.Value = Checked Then
            Adodc1.Recordset("fulldebt") =  1 
        End If
        'конец проверки вида оплать (полная, либо долг)
    Exit For
End If
    Adodc1.Recordset.MoveNext
Next i
Next j
    MsgBox "Покупка произведена успешно."
    lstSoldSIMs.Clear
Else
    MsgBox "Пожалуйста, заполните все данные."
End If
    End If ' конец проверки БД на пустоту
End Sub
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36518097
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно было бы уже и научится пользоваться тэгом оформления кода....

а еще рекомендую правильное форматирование вложенных условий и циклов для лучшего понимания, особенно посторонним программистом (каждое закрытие цикла и условия на одном уровне с открытием, вложенные команды с отступом и на одном уровне). Это также попмогает избежать логических ошибок.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Private Sub cmdApprove_Click()
If Adodc1.Recordset.RecordCount <>  0  Then ' проверить БД на пустоту
  Adodc1.Recordset.MoveFirst
  If cmbDiler.Text <> "" And txtPrice.Text <> "" And lstSoldSIMs.ListCount <>  0  _
     Or chkCash.Value = Checked Or chkNoCash.Value = Checked Then
    For j =  0  To lstSoldSIMs.ListCount
      Adodc1.Recordset.MoveFirst
      For i =  0  To Adodc1.Recordset.RecordCount -  1 
        If Trim(Adodc1.Recordset("num")) = Val(lstSoldSIMs.List(j)) Then
          Adodc1.Recordset("diler") = cmbDiler.Text
          Adodc1.Recordset("datesold") = Date
          Adodc1.Recordset("price") = txtPrice
          Adodc1.Recordset("status") = "1"
          'проверка вида оплать (полная, либо долг)
          If chkCash.Value = Checked Then
            Adodc1.Recordset("nodebt") =  1 
          ElseIf chkNoCash.Value = Checked Then
            Adodc1.Recordset("fulldebt") =  1 
          End If
          'конец проверки вида оплать (полная, либо долг)
          Exit For
        End If
        Adodc1.Recordset.MoveNext
      Next i
    Next j
    MsgBox "Покупка произведена успешно."
    lstSoldSIMs.Clear
  Else
    MsgBox "Пожалуйста, заполните все данные."
  End If
End If ' конец проверки БД на пустоту

End Sub


теперь посмотрим....
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36518111
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй заменить цикл поиска по рекордсету
For i = 0 To Adodc1.Recordset.RecordCount - 1
на метод рекордсета Find

мне кажется, это будет быстрее, но не факт.

Но подход, в принципе, порочен.
Для ускорения записи в базу, надо выполнить в нее запрос минуя рекордсет.
Запрос будет выглядеть примерно так:

Код: plaintext
1.
2.
UPDATE MyTable SET diler='Авангард', datesold='2010-03-13', price= 25 , status= 1 , nodebt= 0 , fulldebt= 1 
WHERE num IN ( 5 , 15 , 26 , 425 , 426 , 4865 )

точный синтаксис будет зависеть от используемой БД
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36518466
bubek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тест выделения кода...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Private Sub cmdApprove_Click()
If Adodc1.Recordset.RecordCount <>  0  Then ' проверить БД на пустоту
    Adodc1.Recordset.MoveFirst
If cmbDiler.Text <> "" And txtPrice.Text <> "" And lstSoldSIMs.ListCount <>  0  _
Or chkCash.Value = Checked Or chkNoCash.Value = Checked Then

For j =  0  To lstSoldSIMs.ListCount
    Adodc1.Recordset.MoveFirst
For i =  0  To Adodc1.Recordset.RecordCount -  1 
If Trim(Adodc1.Recordset("num")) = Val(lstSoldSIMs.List(j)) Then
    Adodc1.Recordset("diler") = cmbDiler.Text
    Adodc1.Recordset("datesold") = Date
    Adodc1.Recordset("price") = txtPrice
    Adodc1.Recordset("status") = "1"
        'проверка вида оплать (полная, либо долг)
        If chkCash.Value = Checked Then
            Adodc1.Recordset("nodebt") =  1 
        ElseIf chkNoCash.Value = Checked Then
            Adodc1.Recordset("fulldebt") =  1 
        End If
        'конец проверки вида оплать (полная, либо долг)
    Exit For
End If
    Adodc1.Recordset.MoveNext
Next i
Next j
    MsgBox "Покупка произведена успешно."
    lstSoldSIMs.Clear
Else
    MsgBox "Пожалуйста, заполните все данные."
End If
    End If ' конец проверки БД на пустоту
End Sub
...
Рейтинг: 0 / 0
Ограничен ли Listbox по количеству выводимых строк?
    #36518803
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubekТест выделения кода...

для тестов есть ветка "тест"
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ограничен ли Listbox по количеству выводимых строк?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]