|
|
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
Добрый день. Посоветуйте как можно сделать следующее. Есть БД MS SQL, в ней около 10000 записей. Необходимо в Excel организовать интерактивный поиск (не помню как правильно такой поиск называется) по одному определённом столбцу всех записей. Все найденные записи необходимо выводить в ListBox или в что то подобное... Т.е. при вводе в поле каких-нибудь символов сразу заносились найденные записи удовлетворяющие критерию поиска в ListBox или в что то подобное. Если делать запрос к базе каждый раз при вводе нового символа, то будут тормоза связанные с выполнением запроса, очистки ListBox и занесения найденных записей в ListBox... Посоветуйте как это можно всё аппетитно мделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2012, 18:21 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
puma_q, Из боевого опыта :) При инициализации формы, заношу весть массив в listbox с visible=false затем пишу функцию которая шерстит данный массив и перекладывает данные в listbox, затем при добавлении символа считываю массив с видимого контрола, при убавлении шерстим весь массив со скрытого контрола. на 100000 записей не знаю как будет шерстить но при 5 - 6 отрабатывало быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2012, 19:05 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
жду ёще предложений как это можно сделать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2012, 14:34 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
puma_q, Интересно, а что Вы хотите вообще увидеть ?? готовый код ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2012, 14:36 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
puma_qжду ёще предложений как это можно сделать....Набор записей ака ADO.Recordset с курсором на клиенте. Кода меньше, чем с массивом, но принцип тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2012, 14:52 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
Возникло несколько вопросо: 1. не понятно как в массиве искать записи удовлетворяющие заданному критери, т.е. это перебор всего массива с проверкой на вхождение? 2. если применять ADO.Recordset и функцию filter, что быстее будет работать фильтр в ADO.Recordset или поиск в массиве....? 3. Есть ли какой-нить элемент типа DBTable в Excel, что бы можно было на форму выложить и указать для datasource? 4. Если есть ещё у какого-то идея как это сделать, прошу высказаться.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 11:31 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
puma_q2. если применять ADO.Recordset и функцию filter, что быстее будет работать фильтр в ADO.Recordset или поиск в массиве....? 3. Есть ли какой-нить элемент типа DBTable в Excel, что бы можно было на форму выложить и указать для datasource? 2. А зачем тянуть всю таблицу на клиента, а затем фильтровать? Поскольку условие у вас известно ДО обращения к серверу - используйте сразу в SQL-query конструкцию 'select ... from ... where ...' 3. MSHFlexGrid , наверное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 11:47 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
2. А, нет. Я неправ был... У вас же посимвольный поиск. Придётся таблицу полностью залить на клиента. НО! - можно ведь затем и через ADO обращаться уже к локальной копии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 11:53 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
просто поиск делается не на каждое нажатие/изменение строки поиска, а с задержкой, скажем 300-600 ms а в остальном - обычные select-ы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 11:55 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
puma_qВозникло несколько вопросо: <<<1. не понятно как в массиве искать записи удовлетворяющие заданному критери, т.е. это перебор всего массива с проверкой на вхождение?>>>> Да <<<2. если применять ADO.Recordset и функцию filter, что быстее будет работать фильтр в ADO.Recordset или поиск в массиве....?>>> Проверьте сами, что мешает ? На мой взгляд на массиве будет быстрее <<<3. Есть ли какой-нить элемент типа DBTable в Excel, что бы можно было на форму выложить и указать для datasource? >>> Наверное только сторонние Activex <<<4. Если есть ещё у какого-то идея как это сделать, прошу высказаться....>>> .................................. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 12:10 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
Скорость массива для ваших 10000 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. результат Код: vbnet 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 12:19 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
Почему не воспользоваться сводной таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 12:46 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
FПочему не воспользоваться сводной таблицей. Она уже интерактивный поиск могет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 12:50 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
1. Что то не могу найти в References MSHFlexGrid (вроде так вот правильно она называется msflexgrid), как она правильно называется MSHFlexGrid или откуда её можно скачать? 2. AndreTMА, нет. Я неправ был... У вас же посимвольный поиск. Придётся таблицу полностью залить на клиента. НО! - можно ведь затем и через ADO обращаться уже к локальной копии... Блин, я не знаю как сделать запрос к запросу... :( у меня есть запрос: Код: vbnet 1. 2. 3. 4. Как к нему обратится? 3. lu0 просто поиск делается не на каждое нажатие/изменение строки поиска, а с задержкой, скажем 300-600 ms А как это организовать?, в самой процедуре Private Sub TextBox1_Change()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 12:56 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
R DmitryFПочему не воспользоваться сводной таблицей. Она уже интерактивный поиск могет Она намного лучше может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2012, 12:58 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
Прошу коментариев по этим высказываниям: 1. AndreTMПридётся таблицу полностью залить на клиента. НО! - можно ведь затем и через ADO обращаться уже к локальной копии... как через ADO обращаться уже к локальной копии набора данных? 2. lu0просто поиск делается не на каждое нажатие/изменение строки поиска, а с задержкой, скажем 300-600 ms Как это организовать, в самой процедуре Private Sub TextBox1_Change()? Типа sleep 500, но ведь при этом происходит "подвисание" программы и набранный текст не отображается в поле пока не отработается макрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2012, 14:38 |
|
||
|
Нужна помощь по интерактивному поиску в БД...
|
|||
|---|---|---|---|
|
#18+
1. Сначала вы считываете таблицу и копируете рекордсет в один из листов своей книги. Дальше - обращаетесь уже к этому листу, получая новый набор, примеры есть там 12276857 . Или можно, конечно, попробовать и первоначально полученный рекордсет фильтровать... 2. Используйте Timer(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2012, 15:02 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=105&tid=2175884]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 384ms |

| 0 / 0 |
