• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Database Script: Source.close() На Postopen

  • Автор темы Автор темы alik86
  • Дата начала Дата начала
A

alik86

Доброго времени!
И вновь лотус, и вновь непонятно, и вновь я тут...
Ситуация следующая:
Повелеваю я (глупец!) на событии Postopen в Database Script быть Source.Close(). И вот в чем беда: на боевой базе, в которой мне это и надо, должного эффекта нет. Во вновь созданной -- всё ок, в ряде других баз -- всё ок, в нужной -- нет.
Эксперимент:
Код:
Код:
Sub Postopen(Source As Notesuidatabase)
MsgBox "Postopen"
Call Source.Close()
End Sub
Там где ок: база открылась -> сообщение выдало -> база закрылась
Там где нет: база открылась -> сообщение выдало -> база НЕ закрылась (если делать дело под отладчиком, то имеем "Command is not available.")
Кто расскажет почему? Кто расскажет как бороться? Кто? ;)
 
Если в локальной копии базы все отработает, то скорее всего сама база уже битая... Лучше пересоздать.
Кэш удалить, клиент переоткрыть. Все как всегда.
 
Не, не, не -- не всё так просто. ;)
Похоже при наполнении приложения элементами дизайна (и даже скорей всего каким-то конкретным), штукенция эта работать и перестаёт. На просторах интернета я нашел лишь: . Но 100%-го подтверждения этому экспериментально не получил.
 
Хм, похоже действительно вся эта магия как-то связана с Frameset'ом: заменил базе Launch с "Open desinated Frameset" на "Restore as last viewed..." и Source.Close() отработало должным образом. Вот только заменяте базе Launch -- не решение. Да и нельзя.
 
Хм... тогда вариант такой:
1. Делаем фреймсет с одним фреймом
2. Делаем его вычисляемым (Named Element, Value = Computed), на основании ролей может быть производить вычисления.
3. Если вычисления не прошли (False) , то открываем во фрейме форму, в событии postOPen которой стоит UiDb.Close
Ну а если вычисления вернули True - открываем рабочий фреймсет.
Ну и да, придется сменить автозапуск базы на новый фреймсет.

Еще вариант посмотреть что в этом фреймсете и в одном из элементов прописать код закрытия базы.
Короч, все решаемо ;)
 
А вот и спасибо! Воспользовался Postopen'ом одной из Page, имеющихся во фрэймсэте. Пока полёт нормальный.
Но осадок остался... ;)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы