Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: настройка для документа
Форум программистов > Базы данных и администрирование > Lotus > Lotus - Программирование
kilcher
Добрый день!

Помогите,пожалуйста, в решении одного вопроса. rolleyes.gif
Существует форма,документы по которой можно создавать на определенном сервере(сервер задается администратором).
Для этого я решила создать форму-настройку,где будет указываться сервер. Затем в форме,где создается документ в Querysave добавить проверку на имя сервера. Только вот как эту проверку осуществить? Как брать значение из поля формы настройки,ведь создавать view для одного документа нет смысла.
Помогите,пожалуйста!
Medevic
Профильные документы(Profile forms + F1).
Цитата(kilcher @ 18:08:2008 - 10:27) *
Затем в форме,где создается документ в Querysave добавить проверку на имя сервера.

А не поздно ли делать проверку? Полчаса заполнял документ, а потом опа... smile.gif
Akupaka
исходя из того, что профильные доки могут глючить, то и для одного документа можно создать вид... а если правильно его обдумать, то он может служить и не для одного документа настроек, а нескольких разных, т.е. создать такой вид, что позволяет найти нужный документ по ключу.
такой вид не будет занимать много места, еще можно сделать, чтобы он обновлялся только вручную, и ничего страшного в этом не будет...

а на счет проверки, то Medevic прав smile.gif
что-то в последнее время проверять все в конце стало модно wink.gif

проверку можно сделать либо перед открытием документа QueryOpen + IsNewDoc
либо сделать агент, который будет выполнять проверку и создавать документ, если условия выполнены, а агент уже запускать из вида вместо простого создания документа... ну или по своему smile.gif
kilcher
Спасибо за советы! Начала писать и что то,видимо, не очень удачно sad.gif


Dim workspace As New NotesUIWorkspace,db1 As NotesUIDatabase,doc As NotesDocument, v As NotesView,N As String
Set db1 = workspace.GetCurrentDatabase
' так я выясняю какя текущая база,затем нахожу нужный документ
Set v=db1.GetView("Настройка")
Set doc=v.GetFirstDocument
N=doc.getItemValue("Server")
Разве GetView не работает текущей базой? Выдает ошибку именно на этой строке
Akupaka
видать db1 не инициализирован тем что надо... workspace.GetCurrentDatabase вернет объект класса NotesUIDatabase, а не NotesDatabase...


попробуйте

Set db1 = workspace.GetCurrentDatabase
Set v=db1.Database.GetView("Настройка")

или

dim s as new notessession
dim db as NotesDatabase
set db = s.currentDatabase
kilcher
Спасиб. Сделала так:

Sub Click(Source As Button)
Dim session As New NotesSession, doc As NotesDocument, N As String
Dim db As NotesDatabase
Dim view As NotesView
Set db = session.CurrentDatabase
Set view = db.GetView( "Настройка" )
Set doc=view.GetFirstDocument
N=doc.getItemValue("Server")


Можно еще вопросик? smile.gif После всего этого я сравниваю значение N cо значением текущей базы. Как можно конвертировать тип текущей базы,чтобы его можно было сравнить со значением N?
Akupaka
тип текущей базы? smile.gif исходя из кода, тебе нужно сравнить имена серверов...
глянь класс NotesName
должно сработать подобное:
N=doc.getItemValue("Server")
dim paramName as notesName
set paramName = new NotesName(N)
if paramName.canonical = db.Server then
else
end if

еще хорошо бы использовать вместо имен видов алиасы, и делать проверки инициализации объектов, например,
после того, как ты инициализировала документ с помощью этого кода Set doc=view.GetFirstDocument, хорошо бы проверить документ, т.к. его может и не быть:
Set doc=view.GetFirstDocument
if not(doc is nothing) then
' документ есть, можно с ним работать
else
' документа нету! надо че-то делать
end if
kilcher
Красота!!!! Все работает!!!! rolleyes.gif
Только пришлось избавится от посредника N,вылезали ошибки. Вот такая строчка получилась.

Set paramName = New NotesName(doc.GetItemValue("Server")(0))

Спасибо огромное!!! Ты МЕГА-МОЗГ!
Constantin A Chervonenko
Цитата(Akupaka @ 18:08:2008, 10:46 ) *
исходя из того, что профильные доки могут глючить, то и для одного документа можно создать вид.

"Просто Вы не умеете их готовить!"(с)
Профайлы НЕ ГЛЮЧАТ. Они ведут себя в точном соответствии с док-цией. Вот формы их изредка глючат (в части Authors-полей).

В контексте вопроса: профайл - самое онО для данной задачки
Akupaka
2 Constantin A Chervonenko
под глюками профайлов, подразумевается их кеширование клиентом и возникающими при этом некорректными результатами обращения к ним...
к стати, наверное, вопрос, что лучше использовать - профайлы или просто документы, все еще может побудить большие споры wink.gif

2 kilcher
с N ошибка возникла, потому что ты его объявила как строку, а GetItemValue возвращало массив...
ты вот параметром в конструктор объекта передала уже не массив, а конкретный его элемент ( Set paramName = New NotesName(doc.GetItemValue("Server")(0)) ), потому ошибки нет, так же можно было запихать сначала его в N, а потом передать конструктору...
ЗЫ: я не мега, я просто немного опытнее
Constantin A Chervonenko
Цитата(Akupaka @ 18:08:2008, 15:48 ) *
2 Constantin A Chervonenko
под глюками профайлов, подразумевается их кеширование клиентом

Кеширование - не глюк, а вполне детерминированный механизм. Ради него профайлы и придуманы. В 4-ке это декларировалось открыто: профайл - часть дизайна, со всем дизайновским кешированием и наследованием (или кеширование дизайна - это тоже зло?).
В 5-ке индусы завибрировали и разжаловали профайлы в документы. В 6-ке произошел "возврат к вечным ценностям" (частичный mad.gif )
Akupaka
да нет же smile.gif результаты кеширования, обычно воспринимаются пользователями как глюки, т.е. пользователь меняет значение в профайле, но функция, читающая профайл, возвращает старое значение, и это уже изменяет логику приложения!
и, если бы тестировщик софта, не учитывая эту лотусовую фичу, увидел такой результат работы, то обязательно записал бы баг! smile.gif
я же не говорю, что кеширование - зло! но не всякий пользователь знает, что это фича wink.gif

интересный, к стати, момент - что хорошего в том, что профайлы - часть дизайна? я не вижу преимуществ... или не понимаю их smile.gif
и чего это профайлы придуманы ради кеширования? smile.gif

(модерам: если тут начнется обсуждение этого вопроса, то его лучше отделить в новую тему, имхо)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.