Отображение процесса работы в ProgressBar при вызове хранимой процедуры
Добрый день!
Задача: Есть хранимая процедура tsp_MakeMeHappy которая формирует таблицу за 18 секунд, в клиенте нужно отобразить ProgressBar с отображением процесса (т.е палочки в ProgressBar должны бегать).
Для решения задачи предложен следующий код:
var Caption = 'Формирование таблицы для счастья';
var Prompt = '';
var WithCancel = false;
var ShowModal = false;
var ProgressWindow = BeginProcessingProgress(Self, Caption, Prompt,WithCancel, ShowModal);
ControlPaySectionWorkspace.ProgressWindow = ProgressWindow;
SetAttribute(ProgressWindow, 'NotifyObject', Self);
InternalSetCaptionForProcessingProgress(ProgressWindow, Self, ProgressCaptionMessage);
var Parameters = CreateSPParameters();
var SQLText = 'exec [dbo].[tsp_MakeMeHappy]';
Connector.DBEngine.ExecuteCustomSQL(SQLText, Parameters);
var Complete = 100;
MoveProcessingProgress(ProgressWindow, Complete, WithCancel);
EndProcessingProgress(ProgressWindow, WithCancel);
Проблема в том, что на строчке Connector.DBEngine.ExecuteCustomSQL(SQLText, Parameters); мы уходим в SQL Server на 18 секунд, и никак не можем отобразить процесс работы в ProgressBar. Так как сколько будет выполняться процедура в общем случае не понятно, но хотелось бы отобразить процесс работы, именно в ProgressBar. Я понимаю что для отображения часиков (на курсоре) можно написать System.BeginProcessing(); ... System.EndProcessing(); но это будет не красиво. Просто ставить
MoveProcessingProgress(ProgressWindow, Complete, WithCancel);
перед вызовом хранимой процедуры, тоже не лучшее решение. Получать параметры с ХП - не выход, так как мы их получим после отработки всей процедуры. Многопоточности, на сколько я знаю, в JScript'е нет.
Просьба поделиться опытом, как можно отобразить процесс работы хранимой процедуры
Нравится
АльфаКрыса, универсального решения нет, всегда будет кастомное - никто не скажет вам сколько времени необходимо sql серверу на вашу ХП. Самым простым и оптимальным решением будут "часики", сложным и притянутым "за уши" - шаги в процедуре покрыть записью в какую-то таблицу, а в конфигурации по таймеру мониторить ее и рисовать шаги в прогрессе, но о времени выполнения они скажут мало.