|
|
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Учитесь правильно распределять задачи! На мой опыт и взгляд для обычного пользователя одним из показателей «удобности» программы и естественно авторитетности программиста является скорость построения отчетов. Как программист, вполне понятно, можно сказать – «Какое дело пользователю до внутренностей программы?». Пользователь не должен (не обязан) знать о транзакциях и особенностях написания кода Вами. Однако видит результаты Вашей работы каждый и целый рабочий день помногу раз. Пришлось мне однажды попариться с одним отчетом. Надо сказать отдельно об условиях. Вначале условий было всего два, потом четыре. Пользователь выбирал с помощью группы переключателей несколько параметров и готово. В конце концов, на форме оказалось четыре группы переключателей, два на два, два на три плюс список с месяцами. Долго я думал как, и быстро!? Вначале в события ПослеОбновления каждой группы написал код присваивания, получилось четыре переменной со значением выбранного параметра. Потом посчитал, и… вышло у меня 36 нужных вариантов из этих комбинаций. Написал еще «чуть-чуть» кода (If и Case) и вот все 36 вариантов у меня в одной переменной. Дальше Case Select. Ставим код в кнопку вывода отчета, запускаем и …. Безумно долго! И мало того, что кое- какие данные вытягиваются из сети. Стал я думать еще. Пришла идея о сканировании. Задал интервал 250 в таймере, а в событии таймера и вставил код опроса состояния флажков. Пока пользователь то да се, а переменная всегда с выбранным значением! Только во время формирования отчета (копирование в локальную таблицу, заполнение NULL нулями и т.д.) а потом вывода в Snapshot формате, таймер то работает. Решил я его отключать во время формирования отчета, а после окончания вновь запускать. Потом задался вопросом, а нужно ли что бы процедура сканирования работала всегда? Подумал еще, оформил процедуру как функцию в форме, выкинул таймер, в события группы переключателей НажатиеКнопки вписал вызов функции сканирования значений. При открытии формы, переменной присваивается значение по умолчанию, что соответствует исходному порядку переключателей (самый простой отчет), а если пользователю нужно что- то другое, то времени что бы выставить флажки, сообразить и переместить мышь на кнопку запуска, вполне хватает на и получение определяющего значения в переменной. Думайте господа! P.S. Если у кого-то возникли схожие проблемы, могу подробнее, но на Ваш mail. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:18 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Ну чего. Описан традиционный процесс думания. Наверно, он у всех примерно такой. А в чем мораль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:22 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Это просто радость бытия. Мало кто, да и мало кого это интересует, там где я нахожусь, и приятно после, чувствовать, что нашел выход! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:28 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Пришла идея о сканировании. Задал интервал 250 в таймере, а в событии таймера и вставил код опроса состояния флажков а можно по событиям флажков присваивать переменные и нахер таймер, через каждые 250... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:30 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Тогда бы пришлось написать и держать переменных в памяти больше, каким образом в это случае, получался тот единственный идентификатор нужного отчета? А от таймера я и отказался! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:36 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
а я всегда ВСЕ условия впихивал в запрос как-то у меня енто получается и не парюсь с select case ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:46 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Уважаемый вагоновожатый! Попробуйте-ка пожонглировать сетевыми запросами! А погоня-то за скорость! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:50 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
у меня ни один запрос не думает больше 0,5 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:03 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Чего-то я пытаюсь уловить суть и никак не получается. Может у меня к концу дня мохги плавятся, может еще чего-то. Нельзя ли на примере показать о чем речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:08 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
банально... когда пишешь изначальную форму отчет вполне можно нарваться на тормоза... но естественно что нужно оптимизировать быстродействие а способов - неограниченное множество. - оптимизация структуры базы данных - выбор технологии (если возможностей MDB Ассess не хватает то переходишь ADP + MSSQL) - кеширование данных в локальные/ публичные переменные / массивы если программа работает медленнее оператора то естественно - раздражение от работы такой программы и соответствующий авторитет програмиста. полностью согласен с XT что отзыв программы на любое (крупное: запуск формы или отчета) действие опратора должен быть не более полсекунды. при работе с вводом тормозов вообще не должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:21 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
Ничего не понял. Р-у-с-л-а-н, и что? И все? Ну и что? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:25 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
отзыв программы на любое (крупное: запуск формы или отчета) действие опратора должен быть не более полсекунды. Наверное не нужно так категорично. Если есть база данных (SQL) с количеством записей в основных таблицах порядка 1 млн. и форма поиска по индексированным полям - как не оптимизируй не получится 0,5 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:30 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
У меня дерево на форме растет, ну ни как 0,5 секунды не получается его выростить, есс-но юзвяря ворчат.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:38 |
|
||
|
Просто опыт.
|
|||
|---|---|---|---|
|
#18+
А что, если источник данных отчета - запрос будет брать данные прямо с формы-диалогового окна отчета? То есть при открытии отчета открывается форма-диалогвоое окно, при нажатии ок она скрывается. В запросе содержатся выражения iif(forms!test!Категория=1 and forms!test!Группа=Таблица!Группа)=true. У меня такие запросы работают очень быстро по таблицам 200 тыс записей. Что касается индексирования, то правильно задать составные индексы для таблиц и убедится, что используются связи БД между таблицами. Например: есть таблица с полями Дата, Валюта, Курс. Если ищется курс валюты на дату, а поля Дата и Валюта проиндексированы отдельно - неизбежно падение скорости выборки. Составной индекс по полям Дата и Валюта обеспечит наибольшую скорость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:52 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32275894&tid=1679231]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 363ms |

| 0 / 0 |
