Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ProgressBar на клиенте / 11 сообщений из 11, страница 1 из 1
11.06.2002, 14:40:20
    #32032501
Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
Клиентская программа на Дельфях. Какое-то действие инициирует запуск хранимой процедуры в БД, которая выполняется довольно продолжительное время. Можно ли каким-нить образом отловить ход работы этой процедуры и показывать субж.
Спасибо.
...
Рейтинг: 0 / 0
11.06.2002, 16:21:42
    #32032518
Dankov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
Нет такой возможности. Также невозможно узнать время, за которое выполнится процедура. Крути просто мультяшку - анимированый гифчик во время исполнения процедуры.
...
Рейтинг: 0 / 0
20.06.2002, 20:41:14
    #32033398
Harry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
ну не совсем так...
Я делаю так:
Создаю таблицу с 2 полями(count,current)
в первое перед выполнением пишу count всех записей,
которые обрабатываются во второе переменную, которая автоинкрементируется в курсоре.
А в Delphi в отдельном потоке(чтоб не висело) периодически считываю в progressbar
И всегоделов.
PS не забывайте обнулять счетчики :)
...
Рейтинг: 0 / 0
20.06.2002, 20:42:30
    #32033399
Harry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
sorry, просто инкрементирую :)
...
Рейтинг: 0 / 0
21.06.2002, 00:04:07
    #32033407
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
А у меня сообщения просто во время выполнения ХП через собственный COM сервер рассылаются по клиентам. Кому надо, тот отслеживает, и тот же индикатор синхронизирует. Чем удобно, что можно сделать прогу монитор и в ней такие сообщения регистрировать для отладки.
...
Рейтинг: 0 / 0
21.06.2002, 10:30:46
    #32033437
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
А у меня сообщения просто во время выполнения ХП через собственный COM сервер рассылаются по клиентам. Кому надо, тот отслеживает, и тот же индикатор синхронизирует. Чем удобно, что можно сделать прогу монитор и в ней такие сообщения регистрировать для отладки

а чуть подробнее можно - в общих словах как это все работает?
...
Рейтинг: 0 / 0
21.06.2002, 14:38:29
    #32033476
Сат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
Очень медленно :)
...
Рейтинг: 0 / 0
21.06.2002, 16:00:15
    #32033487
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
Почему медленно. Это все зависит от того, как сделать. На входе в ХП COM-сервер создается, на выходе соответственно удаляется. Процедура расчета заработной платы - расчет не горизонтальный (то есть по договорам), а вертикальный (по начислениям/удержаниям). Естественно я не могу на клиента послать какие договора я расчитываю, потому как расчеты идут запросами, а не перебором записей через курсор. Зато я могу посылать сообщение о завершении расчета каждого обьекта начисления/удержания. На этом тоже можно построить тот же индикатор. Мониторинг тоже работает, так как отлавливает сообщения того же расчета и при желании по соответствующим таблицам может вытаскивать кого и за что считали :) Сам COM сервер сделан на Delphi и элементарен - соответствующие методы принимают номер сообщения и его параметры, через встроеные в Delphi компоненты NET зарегистрированному клиенту (клиентам) по его сетевому адресу и порту передается сообщение. Соответствующе такие же компоненты висят в клиентах, принимают сообщение, распаковывают и всем подписанным формам рассылают сообщения. Далее по усмотрению самих форм. Чем кстати механизм удобен, что можно организовывать оповещения клиентов о различных событиях, организовать чат и осуществлять мониторинг параллейных процессов, например запущенных ХП расчетов через SQL Agent.
...
Рейтинг: 0 / 0
21.06.2002, 16:58:04
    #32033492
Сат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
2ASCRUS
Да вы не обижайтесь, я ж вроде как и смайл поставил - типа шутка... Естественно, то что вы описали(я правда и до этого знал как это делается) это очень хорошо... Но. Это не решает всех проблем. Представьте ситуацию - сохраненная процедура и в ней один всего лишь оператор на апдейт, но зато этот апдейт в зависимости от входных параметров может длится от секунды, до 10 минут. Как тут будет работать ваш ком-объект? А никак он не будет работать. А что бы он заработал - нужно процедуру переделать таким образом, что бы можно было отслеживать каждое обновление отдельной строки... Ну а это уже курсор(ну собственно именно это вы и описали в серединке постинга) -> курсор+ком-объект=тормоза :))
ЗЫ Короче вывод такой - ваш метод прекрасен и в большинстве случаев очень полезен, но на всеобщую панацею не тянет...
...
Рейтинг: 0 / 0
21.06.2002, 19:50:47
    #32033515
Сергей Тихонов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
Я вот что хочу сказать. ИМХО, ради прогресс-бара делать процедуру через курсор - это ... даже не знаю, как сказать. Глупость, вот и все. Всем известно, что курсоры ужасно тормозят работу сервера... Поэтому... игра не стоит свеч, а результат труда... ;-))
...
Рейтинг: 0 / 0
24.06.2002, 11:02:59
    #32033588
Владимир Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressBar на клиенте
Я использую такой приём.
Есть вспомогательная табличка, где для таких длительных процедур записано время их выполнения. После каждого вызова процедура корректирует это время, приближая к некоему статистическому значению. (Но можно этого и не делать)
В клиентском приложении перед запуском процедуры определяется приблизительное время её выполнения.
Затем асинхронно запускается процедура. По таймеру меняется прогресс-бар.
Конечно, так не показывается ход выполнения, а время приблизительное и зависит от разных условий. Но так ли нужно пользователю знать, какой шаг процедуры выполняется, и сколько точно времени это займёт - 320 или 345 секунд.
Я думаю достаточно приближённой оценки - "Успею кофе выпить, или ещё и сигаретку выкурить, пока ПРОЦЕСС ИДЁТ?" ;-)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ProgressBar на клиенте / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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