Страница: 1 |
Страница: 1 |
Вопрос: ComboBox
Добавлено: 29.07.09 10:26
Автор вопроса:
Tegg2009
Всме привет. Скажите Плз. Как заполнить ComboBox значениями из Бд. Если можно с примером. Спасибо
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа: inferno
Вопросов: 8
Ответов: 39
Web-сайт:
Профиль | | #1
Добавлено: 29.07.09 16:02
Как понимаю тебе нужно заполнить комбобокс определённым столбцом из таблицы?
Если да, то делай следующее:
end sub
Номер ответа: 2
Автор ответа: Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #2
Добавлено: 29.07.09 18:35
Мне кажется DataSource и DataMember полегче будет, конечно надо будет изменить подключение так как вроде DataSource рекордсет не принимает. Использовать инструменты АДО.Нэт и будет всё красиво.
Инферно не в обиду но мне кажется при переборе лучше использовать цикл фор и твой цикл пропускает первую строчку.
Номер ответа: 3
Автор ответа: Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #3
Добавлено: 30.07.09 01:39
Доводы?
Номер ответа: 4
Автор ответа: Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #4
Добавлено: 30.07.09 11:09
Собственное мнение и больше уверенность что не поймаю зацикливание, вообще стараюсь не использовать цикл While, только когда For не решает той или иной проблемы тогда использую, покамест в 90% For спасает лихо.
Номер ответа: 5
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #5
Добавлено: 30.07.09 13:28
Aston: а сколько времени займет adodc1.recordset.Count для, скажем, миллиона записей?
P.S. К словам не цепляться, типа что в комбо лимон записей пихать не будут. это к фразе:
Номер ответа: 6
Автор ответа: Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #6
Добавлено: 30.07.09 20:17
Arseny
И я это написал потому что мне кажется что более правильно использовать в таких ситуациях цикл For, так снижается вероятность ошибки и нет вероятности зацикливания, вот и всё.
А как кто писать будет это уже мне всё равно.
Arseny и Count это сколько строк(числовое значение), так что к чему твои слова вообще не понятно.
Номер ответа: 7
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #7
Добавлено: 31.07.09 20:10
это будет долго при любом раскладе и при While и при For
не согласен. на вычисление количества записей уходит очень много времени при большой базе (раньше сам так делал для обеспечения прогрессбара на 2 лимона записей, но быстро от этого отказался), поэтому использовать count нецелесообразно. И к чему извращаться с лишними переменными, когда существуют конструкции, специально предназначенные для таких ситуаций?
Номер ответа: 8
Автор ответа: Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #8
Добавлено: 31.07.09 22:50
Ну если есть конструкция хоть блесни ею чтоб мы знали, даже самому интересно стало, так как я учусь ещё в программировании.
Про Count не знаю мож при большой базе и действительно много времени будет уходить, у меня лично таких проблем никогда не было(с огромными базами не работал) и тачка нормальная.
У меня тут же вопрос While чё быстрее будет? он при каждом действии будет проверять не конец ли данных.
Номер ответа: 9
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #9
Добавлено: 01.08.09 12:13
под конструкциями как раз подразумевались циклы типа do...loop и while...wend вкупе с eof
While чё быстрее будет? он при каждом действии будет проверять не конец ли данных.
лично у меня сложилось такое впечатление, ибо, еще раз повторю - при больших массивах данных - вычисление количества отнимает много времени.
Номер ответа: 10
Автор ответа: Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #10
Добавлено: 01.08.09 17:32
Мде, надо будет потестить как то.
Номер ответа: 11
Автор ответа: Tegg2009
Вопросов: 4
Ответов: 5
Профиль | | #11
Добавлено: 16.09.09 12:09
Еще раз всем привет.
Вот прочитал я из базы запеси в комбобокс (ADODB)
(В таблице 1-поле ID 2-е name)
DO While NOT rs.EOF
Combo1.additem rs!Name
Combo1.DataMember= rs!ID
rs.Next
loop
Вот теперь мне нужно чтобы в зависимости от выбора в боксе, обращение в базу шло по ID.
Т.е как теперь пользоваться этим DATAMEMBER?? Заранее спасибо.
Номер ответа: 12
Автор ответа: Tegg2009
Вопросов: 4
Ответов: 5
Профиль | | #12
Добавлено: 16.09.09 15:29
маленькие изменения . Теперь я сделал так
Combo1.additem rs!Name
Combo1.ItemData(combo1.NewIndex)= rs!ID
и появляется ошибка , которая орет OverFlow
Номер ответа: 13
Автор ответа: Tegg2009
Вопросов: 4
Ответов: 5
Профиль | | #13
Добавлено: 16.09.09 17:09
все. разобрался.
Номер ответа: 14
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #14
Добавлено: 18.09.09 13:50
Вычисление количества элементов (COUNT) всегда выполняется сканированием таблицы или самого маленького индекса.
Индекс таблицы на миллион записей, сделаный по однобайтовому полю, будет весить порядка десятка мегабайт при условии почти полного заполнения страниц.
Если взять скорость чтения с диска в 20 мб/с, то выполнение COUNT займет менее секунды. При условии что страницы закешированы - ощутимо быстрее.
При рабоет с БД оптимальным по скорости вариантом является чтение через DataReader циклом Do/Loop, поскольку никакого сравнимо эфективного способа получить запись по ее номеру нет.
Все выше сказаное касается SQL Server.
С небольшими базами данных разницы между различными способами досутпа обычно не будет.