|
|
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Нуф-нуфдля Владимир Саныч: >1. Если на форме много комбобоксов, то их RowSource'ы приходится хранить в виде сохраненных запросов, иначе форма работает намного медленнее. Саныч, если честно, то в моей практике лишь несколько раз встречались формы, перегруженные комбобоксами ("перегруженные" в смысле "тормозящие открытие самой формы"). Бился по всякому – и сохраненные и в самом комбике – пофик, тормоза не исчезали. Решил за счет последовательного динамического подвязывания запросов к комбобоксам в момент, когда форма уже открывалась. Форма открывалась быстро и юзер практически не замечал, что… некоторые комбобоксы получают значения и позволяют себя "открыть" только по истечении десятка секунд %) Основные (в первую очередь необходимые юзеру) комбобоксы подключались как и обычно в режиме конструктора, при этом практически не тормозя открытие формы. Подскажите как сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 14:17:40 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Может я неправильно задал вопрос? На какое событие в форме завязать обновление комбобоксов? так чтобы сначала форма открылась, а затем обновились комбобоксы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 14:59:15 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
после открытия формы присвоиваешь RowSource списков содержательное значение и делаешь requery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:00:14 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Видимо, на OnOpen: Me!Combo116.RowSource = длинныйселект Me!Combo117.RowSource = длинныйселект Me!Combo118.RowSource = длинныйселект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:01:05 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Requery вроде само делается, когда меняешь RowSource. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:01:43 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Владимир СанычRequery вроде само делается, когда меняешь RowSource. списки часто связанные с друг дружкой - requery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:06:15 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Владимир СанычRequery вроде само делается, когда меняешь RowSource. Нет. Проверено на XP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:06:55 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Скажем так Мой взгляд на проблему (естественно, без реализации) - Все комбы в первоначальный момент времени заполнены только одним значение (которое и выбрано в комбе) - типа значение по умолчанию (что-то типа Select * From Table1 Where id = 1) - Подменяем RowSource у комба в момент обращения к нему - по событию, т.е. заменяем серект с условием на селект без оного ИМХО: Я бы этим ограничился, но чел. пишет еще и о дозаполнении комбов Ну и пусть: - имеем список комбов (массив №1) + массив №2 типа boolean (заполнены/нет) - изначально второй массив сброшен - я думаю, что еще надо иметь массив №3 с "подменками" (т.е. с текстами реальных запросов) - по таймеру (например 1 раз в секунду) вызываем процедуру заполнения комбо - процедура примерно следующая: -- находим не заполненный комбо (массив №2) -- подменяем ему запрос на реальный (массив №3) -- метим комбо как заполненный (массив №2) -- если все комбы заполнены, то отключаем таймер (хотя это и не обязательно) - в расчете на то, что комбы могут быть заполнены при обращении к ним, делаем пометки в массиве №2 не только по таймеру Э-э-э - вроде все :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:09:28 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
NikPМожет я неправильно задал вопрос? На какое событие в форме завязать обновление комбобоксов? так чтобы сначала форма открылась, а затем обновились комбобоксы. Ужасно извиняюсь неправильно выразился. Как сделать следующее: Открываешь форму с комбобоксами (форма открывается сразу без тормозов) после того как форма открылась комбобоксы "обнавляются" под обнавляются понимается следующее: когда открываешь комбобокс, то первый раз он тормозит (выполняет запрос), а при втором открытии идет по накатанной (без тормозов) так вот надо сделать, чтобы тормоза (выполнение запроса) происходило во время размышлений пользователя какой комбобокс ему открыть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:14:16 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
NikP... так вот надо сделать, чтобы тормоза (выполнение запроса) происходило во время размышлений пользователя какой комбобокс ему открыть ИМХО, как я уже говорил, по таймеру + Может еще и эвристику написать, чтобы угадывать, какой это комбик собрался пользователь открыть При этом обладая только информацией о настроении человека Информация о настроении вычисляется по активности нажатий на кнопки мыши и клавиатуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:18:55 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
paparome NikP... так вот надо сделать, чтобы тормоза (выполнение запроса) происходило во время размышлений пользователя какой комбобокс ему открыть ИМХО, как я уже говорил, по таймеру + Может еще и эвристику написать, чтобы угадывать, какой это комбик собрался пользователь открыть При этом обладая только информацией о настроении человека Информация о настроении вычисляется по активности нажатий на кнопки мыши и клавиатуры чё статистику собрать сложно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:27:36 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
paparome+ Может еще и эвристику написать, чтобы угадывать, какой это комбик собрался пользователь открыть При этом обладая только информацией о настроении человека Информация о настроении вычисляется по активности нажатий на кнопки мыши и клавиатуры Я так понимаю ты предлагаешь запуск select-а во время обращения к комбобоксу. Мне же нужно, чтобы первый запуск запроса в комбобоксе произошел сразу после открытия формы. Причем по всем комбобоксам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:31:50 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Может, обновлять комбобокс в момент обращения к нему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:39:23 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
RowSource у комбобоксов не меняется, меняются только параметры запроса исходя из данных на этой же форме Обновление в моем случае это не просто обновление, а (Читай ниже жирным шрифтом) Открываешь форму с комбобоксами (форма открывается сразу без тормозов) после того как форма открылась комбобоксы "обнавляются" под обнавляются понимается следующее: когда открываешь комбобокс, то первый раз он тормозит (выполняет запрос), а при втором открытии идет по накатанной (без тормозов) так вот надо сделать, чтобы тормоза (выполнение запроса) происходило во время размышлений пользователя какой комбобокс ему открыть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:49:57 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Есть еще одно средство для ускорения. Правда, очень радикальное. Делать привязанной колонкой не скрытую, а тот текст, который показан. Это очень сильно ускоряет, хотя требует серьезных изменений во всей программе. В том числе надо позаботиться об отсутствии дублей в списке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 15:56:16 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Владимир СанычЕсть еще одно средство для ускорения. Правда, очень радикальное. Делать привязанной колонкой не скрытую, а тот текст, который показан. Это очень сильно ускоряет, хотя требует серьезных изменений во всей программе. В том числе надо позаботиться об отсутствии дублей в списке. Честно говоря не хотелось бы применять данный способ А вообще реально ли запустить первый раз запрос в комбобоксе програмно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 16:25:15 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
авторА вообще реально ли запустить первый раз запрос в комбобоксе програмно? Что-то мы не понимаем друг друга. Цытата в первом топике как раз направлена на обратное, т.е. предотвратить полное заполнение комбиков в момент загрузки формы (что бы окно быстрей открылось) И мне всегда казалось, что запрос на комбике выполняется сразу (при загрузке формы или при смене RowSource), а не при первом к нему обращении Или я не прав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 16:54:57 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
paparomeЧто-то мы не понимаем друг друга. Цытата в первом топике как раз направлена на обратное, т.е. предотвратить полное заполнение комбиков в момент загрузки формы (что бы окно быстрей открылось) Если в событие открытие формы ничего не засовываю, то открывается быстро Отсюда возник вопрос куда засунуть данный код paparomeИ мне всегда казалось, что запрос на комбике выполняется сразу (при загрузке формы или при смене RowSource), а не при первом к нему обращении Или я не прав получается, что не прав, т.к. при первом открытии комбика он долго грузится, а при втором открытии выпрыгивает сразу. (а возможно и прав, может быть если комбик не свободный объект (у меня свободный), событие и происходит сразу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 17:11:01 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
А может тогда не стоит такие "длинные" комбики делать? т.е. (ИМХО - конечно), больше 100 записей в комбике - это уже многовато, и может стоит такие комбики бить на партии (части/группы)? типа - первый комбик выбирает группу, второй уже состав этой группы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 17:15:54 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
paparomeА может тогда не стоит такие "длинные" комбики делать? т.е. (ИМХО - конечно), больше 100 записей в комбике - это уже многовато, и может стоит такие комбики бить на партии (части/группы)? типа - первый комбик выбирает группу, второй уже состав этой группы? Да они небольшие. сам запрос большое количество данных обрабатывает. форма данная существует для установки параметров. Есть временной период (указан на форме). так вот исходя из этого периода комбик должен выдать те группы товаров, которые за этот период продавались. А данные по продажам сам понимаешь исчисляются тысячами строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 17:23:13 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Подскажите хотя бы как называется событие, когда список комбика открывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 17:54:17 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
/topic/104140 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 17:58:39 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Moжно еще ADO рекордсеты асинхронно заполнять и по событию комплит ADO конекшена присоеденять их к контролу у Гетца есть пример самый ИМХО верный способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 18:12:25 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч/topic/104140 Поискал, но почему то не нашел? Да название топика отражает мой вопрос, только решили они похоже проблему по другому. Или я чего не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 18:27:10 |
|
||
|
Подвязывание запросов к комбобоксам
|
|||
|---|---|---|---|
|
#18+
А чем асинхронные запросы не подходят? По моему самое то по открытию формы откраваеш новый конекшн WithEvents и на чинаеш асинхронно заполнять рекордсет через его Execute пользователь себе работает,а тут и ExecuteComplete подоспело в нем уже заполненный рекордсет к контролу и приклеил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 18:36:45 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32593673&tid=1673338]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 324ms |

| 0 / 0 |
