Отображение процесса работы в ProgressBar при вызове хранимой процедуры

Добрый день!
Задача: Есть хранимая процедура tsp_MakeMeHappy которая формирует таблицу за 18 секунд, в клиенте нужно отобразить ProgressBar с отображением процесса (т.е палочки в ProgressBar должны бегать).
Для решения задачи предложен следующий код:

            var ProgressCaptionMessage = "Формирование таблицы для счастья";    
            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(); но это будет не красиво. Просто ставить

        Complete = 50;
        MoveProcessingProgress(ProgressWindow, Complete, WithCancel);  

перед вызовом хранимой процедуры, тоже не лучшее решение. Получать параметры с ХП - не выход, так как мы их получим после отработки всей процедуры. Многопоточности, на сколько я знаю, в JScript'е нет.
Просьба поделиться опытом, как можно отобразить процесс работы хранимой процедуры

Нравится

2 комментария

АльфаКрыса, универсального решения нет, всегда будет кастомное - никто не скажет вам сколько времени необходимо sql серверу на вашу ХП. Самым простым и оптимальным решением будут "часики", сложным и притянутым "за уши" - шаги в процедуре покрыть записью в какую-то таблицу, а в конфигурации по таймеру мониторить ее и рисовать шаги в прогрессе, но о времени выполнения они скажут мало.

Александр, спасибо за Ваш ответ.

Показать все комментарии