Database Script: Source.close() На Postopen

Тема в разделе "Lotus - Программирование", создана пользователем alik86, 28 авг 2013.

  1. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Доброго времени!
    И вновь лотус, и вновь непонятно, и вновь я тут...
    Ситуация следующая:
    Повелеваю я (глупец!) на событии Postopen в Database Script быть Source.Close(). И вот в чем беда: на боевой базе, в которой мне это и надо, должного эффекта нет. Во вновь созданной -- всё ок, в ряде других баз -- всё ок, в нужной -- нет.
    Эксперимент:
    Код:
    Код (Text):
    Sub Postopen(Source As Notesuidatabase)
    MsgBox "Postopen"
    Call Source.Close()
    End Sub
    Там где ок: база открылась -> сообщение выдало -> база закрылась
    Там где нет: база открылась -> сообщение выдало -> база НЕ закрылась (если делать дело под отладчиком, то имеем "Command is not available.")
    Кто расскажет почему? Кто расскажет как бороться? Кто? ;)
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Если в локальной копии базы все отработает, то скорее всего сама база уже битая... Лучше пересоздать.
    Кэш удалить, клиент переоткрыть. Все как всегда.
     
  3. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Не, не, не -- не всё так просто. ;)
    Похоже при наполнении приложения элементами дизайна (и даже скорей всего каким-то конкретным), штукенция эта работать и перестаёт. На просторах интернета я нашел лишь: "Если при открытии базы запускается Frameset то данный метод не отрабатывает.". Но 100%-го подтверждения этому экспериментально не получил.
     
  4. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Хм, похоже действительно вся эта магия как-то связана с Frameset'ом: заменил базе Launch с "Open desinated Frameset" на "Restore as last viewed..." и Source.Close() отработало должным образом. Вот только заменяте базе Launch -- не решение. Да и нельзя.
     
  5. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Хм... тогда вариант такой:
    1. Делаем фреймсет с одним фреймом
    2. Делаем его вычисляемым (Named Element, Value = Computed), на основании ролей может быть производить вычисления.
    3. Если вычисления не прошли (False) , то открываем во фрейме форму, в событии postOPen которой стоит UiDb.Close
    Ну а если вычисления вернули True - открываем рабочий фреймсет.
    Ну и да, придется сменить автозапуск базы на новый фреймсет.

    Еще вариант посмотреть что в этом фреймсете и в одном из элементов прописать код закрытия базы.
    Короч, все решаемо ;)
     
  6. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    А вот и спасибо! Воспользовался Postopen'ом одной из Page, имеющихся во фрэймсэте. Пока полёт нормальный.
    Но осадок остался... ;)
     
Загрузка...
Похожие Темы - Database Script Source
  1. garrick
    Ответов:
    3
    Просмотров:
    440
  2. anna
    Ответов:
    11
    Просмотров:
    872
  3. SvetlanaL
    Ответов:
    0
    Просмотров:
    205
  4. SvetlanaL
    Ответов:
    0
    Просмотров:
    412
  5. Nick Nick
    Ответов:
    9
    Просмотров:
    1.131

Поделиться этой страницей