есть отчет, который выгружает объемный набор данных в ексель. Т.к. клиентскриптовая переменная ограничена размером, то в проверке юзают [EXCEL].Exec_Script(V_DEST) для перезаписи нового куска кода на VB, а в Клиент-скрипте Call Form1.ScriptServerValidate(OK, "OK") - пока не опустошится клиентскриптовая переменная.
Т.е. циклическая передача от тела к КСу, и снова в тело, и снова в КС..
По завершении выгрузки, форма отчета не закрывается.
чтобы закрыть форму, предпринял следующее:
Добавил еще одну переменную для клиентскрипта V_DES_FLAG. И заполняю ее только когда [EXCEL].Exec_Script вернет Done
Код:
Public Function Main(LastControl)
If LastControl is OK and V_DEST.Text <> "" Then
DO
Execute V_DEST.Text
Call Form1.ScriptServerValidate(OK, "OK")
Loop While V_DEST.Text <> ""
End If
if V_DES_FLAG.Text = "1" then
msgbox ("")
call Form1.ScriptPostEvent(OK, "CLICK") ' shut this fucking form
End If
Main = True 'Результат валидатора (True, False, NULL)
End Function
Обращаю внимание на выделенную строку MSGBOX. Если я оставляю ее в таком виде - выдается сообщение, и форма закрывается, если же я уберу строку, форма не закрывается, и продолжает висеть.
оч похоже на какую-то багу в стыке VB-ЦФТ, но как это исправить? может кто сталкивался?
есть отчет, который выгружает объемный набор данных в ексель. Т.к. клиентскриптовая переменная ограничена размером, то в проверке юзают [EXCEL].Exec_Script(V_DEST) для перезаписи нового куска кода на VB, а в Клиент-скрипте Call Form1.ScriptServerValidate(OK, "OK") - пока не опустошится клиентскриптовая переменная.
Т.е. циклическая передача от тела к КСу, и снова в тело, и снова в КС..
По завершении выгрузки, форма отчета не закрывается.
чтобы закрыть форму, предпринял следующее:
Добавил еще одну переменную для клиентскрипта V_DES_FLAG. И заполняю ее только когда [EXCEL].Exec_Script вернет Done
Код:
Public Function Main(LastControl)
If LastControl is OK and V_DEST.Text <> "" Then
DO
Execute V_DEST.Text
Call Form1.ScriptServerValidate(OK, "OK")
Loop While V_DEST.Text <> ""
End If
if V_DES_FLAG.Text = "1" then
msgbox ("")
call Form1.ScriptPostEvent(OK, "CLICK") ' shut this fucking form
End If
Main = True 'Результат валидатора (True, False, NULL)
End Function
Обращаю внимание на выделенную строку MSGBOX. Если я оставляю ее в таком виде - выдается сообщение, и форма закрывается, если же я уберу строку, форма не закрывается, и продолжает висеть.
оч похоже на какую-то багу в стыке VB-ЦФТ, но как это исправить? может кто сталкивался?
Не пробовали в файл выводить содержимое [RUNTIME].[EXCEL].tbl_rep?
Нет. а что это даст?
prog пишет:
не видно вашего серверного валидатора.
Если Call Form1.ScriptServerValidate(OK, "OK") не почистит V_DEST.Text то получится бесконечный цикл. попробуйте вот так на всякий случай
Код:
DO
Execute V_DEST.Text
V_DEST.Text = ""
Call Form1.ScriptServerValidate(OK, "OK")
Loop While V_DEST.Text <> ""
Как я уже написал, серверный валидатор перезаписывает V_DEST кусками VBкода, в пределах размерности переменной (32000), через дистрибутивную [EXCEL].Exec_Script(V_DEST). Прочитайте к ней коммент, если интересно.
Alkov пишет:
Почему вывод в Excel не повесить на кнопку OK ?
Как раз при нажатии на ОК отчет и начинает крутиться.
Матвеев Евгений пишет:
Можешь mdb скинуть? ...гляну на тестовой сегодня
Тут довольно много локала, который вам будет тяжко отгадывать при компиляции..
--
у меня самого появилась мысль такого рода, что MsgBox заставляет после закрытия сообщения MsgBox'а выполниться Клиент-скрипту снова, и при этом втором выполнении, он уже проверяет значение переменной V_DES_FLAG.Text = "1" и закрывает форму.
Если теория верна, как ее проверить? как заставить клиентскрипт обновить форму в каждой итерации цикла do while?
какой-то Lastcontrol.Setfocus лишний, надо поэкспериментировать
нипамагло даже с двумя фокусами
Volod пишет:
Проблема возникает только, когда
Цитата:
есть отчет, который выгружает объемный набор данных в ексель
?
немного не улавливаю вашего вопроса. сама операция это отчет. на форме 2 кнопки ОК и Отмена. Нажимаю ОК, формируется классический отчет в эксель, но форма не закрывается, т.к. криво написан КС таким образом, что он не закрывает форму
Alkov пишет:
На OK , Системное действие= OK?
Так она у вас не закрывается или виснет при выводе?
Покажите проверку блок p_info='OK'
на ок системное действие ОК, просто клиентскрипт не закрывает форму, а передает управление в проверку.
Amper пишет:
Вариант перевода на OOXML тоже не предлагать? Very Happy
Отчет не мой, так что нет. надо просто решить этот баг с закрытием формы.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Домен cftclub.ru не связан с ЗАО "Центр Финансовых Технологий" и ни в коей мере не нарушает авторских и иных прав
Владелец может не разделять мнения Участников и не несет ответственности за их публикации
Powered by phpBB