Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: вью
Форум программистов > Базы данных и администрирование > Lotus > Lotus - Программирование
jmp
Добрый день!
При двойном нажатии по документу во вью, открывается документ.
Возможно сделать так, чтобы документ не открывался?
medin84
во вью
Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
Continue=False
End Sub
kizarek
можно ли на уровне представления, запретить удалять документы?
PaKo
Цитата(kizarek @ 1:08:2008 - 11:40) *
можно ли на уровне представления, запретить удалять документы?

А если попробовать в Скрипте Бд на querydocumentdelete проверять какая вюха активна и запрещать из неё удалять? Не устроит?
kizarek
PaKo кхм, а что такое скрипт БД?)


а нашел) шас попробуемс.

но все же актуально, можно ли запретить удаление документа на уровне вью?)
Morpheus
kizarek
в базе данніх есть свои собственніе события (event)

в дизайнере. в БД зайти в Other->Database resources->Database Script ... вот там и есть заголовки тех самых ивентов

можно использовать свойство документа ParentView property - но ограничения надо учесть ( читай хэлп )
kizarek
кхм, а как в этом событии определить какие документ(ы) удаляются?
Morpheus
kizarek
анпроцесед документс


или просто Source.Documents
kizarek
Morpheus
задолбаю счас)))

как убрать с документа выделение о удалении?)

допустим делаем при пометке документа на удаление условие, и надо потом снят эту пометку.
Morpheus
kizarek
NOtesUIView -> DeselectAll
kizarek
во залип то)))

как зная NotesDocument получить его NotesUIDocument ?)))
Morpheus
kizarek
никак, можно тока проверить IsUIDocOpen

а зачем это?
PaKo
Цитата(kizarek @ 1:08:2008 - 13:11) *
как зная NotesDocument получить его NotesUIDocument ?)))

UI - UserInterface, так что через UI можн овзять только открытый документ. А получить его можно через NotesUIWorkspace
kizarek
Morpheus
ну получаем коллекцию документов которые помечены на удаление, дальше условие:

Set doc = collection.GetNthDocument(i)
If doc.getitemvalue("Form")(0) = "форма1" Then
'Call notesUIDocument.DeselectAll - тут снять документ с удаления надо
End If
Morpheus
kizarek
первое замечание ... не юзать GetNthDocument(i) , а юзать GetFirst/Next



втарое ... что мешает после всех операций вызвать снятие галок ( кстати, разве они,галки, сами не снимуться после удачного удаления ???)

If doc.getitemvalue("Form")(0) = "форма1" Then
тутчтото делаем и удалям
end if

Call notesUIDocument.DeselectAll
Akupaka
ребята, а вы не слишком увлеклись? smile.gif
для чего тут NotesUIDOCUMENT?..
если снимать галки надо в виде... NotesUIDocument.DeselectAll и NotesUIView.DeselectAll это немного разные методы smile.gif
Morpheus
Цитата(Akupaka @ 1:08:2008 - 13:36) *
NotesUIDocument.DeselectAll и NotesUIView.DeselectAll э

плять, я и не заметил как kizarek поменял уивид на уидок..... пятница блин....

я ж написал
Цитата(Morpheus @ 1:08:2008 - 10:30) *
NOtesUIView -> DeselectAll
kizarek
ыть....в том то и запара что хз как галки то снять.

есть код:

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim uidoc As NotesUIDocument
    Set db = Source.Database
    Set collection = Source.Documents
    For i=1 To collection.Count
        Set doc = collection.GetNthDocument(i)    
        If doc.getitemvalue("Form")(0) = "Spr" Then
                     если сюда вошли, то необходимо галку снять с документа...или как то
                     по другому предотвратить удаление документа...вопрос как?))
        End If
    Next
End Sub


Morpheus
дык потому и поменял что отлавить событие можно только при удалении документа, во вью то не поймаешь.
Medevic
Цитата(kizarek @ 1:08:2008 - 14:54) *
For i=1 To collection.Count
If doc.getitemvalue("Form")(0) = "Spr" Then
Call collection.DeleteDocument(doc)
End If
Next
Call collection.RemoveAll(true)
Continue = False
Morpheus
kizarek
а тут в любом случае только один вариант Continue = False
Akupaka
я бы так предложил:

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim uidoc As NotesUIDocument
    Set db = Source.Database
    
    Dim doc2 As notesDocument
    Set collection = Source.Documents
    
    Set doc = collection.GetFirstDocument
    While Not(doc Is Nothing)
        Set doc2 = collection.GetNextDocument(doc)
        
        If doc.getitemvalue("Form")(0) = "Spr" Then
            Call collection.DeleteDocument(doc)
        End If
        
        Set doc = doc2
    Wend
    
    ' просто так, в принципе
    continue = collection.Count > 0
End Sub
Morpheus
Medevic
а где ж переход к след. документу

Akupaka
а где-ж удаление из базы ненужных доков?
kizarek
Medevic
так вообще не 1 документ удалятся не будет, а надо только чтобы определённой формы не удалялись)
Akupaka
товарисч Morpheus, Вы заметили в обработчике какого события код написан? smile.gif
Morpheus
Akupaka
пля... я понял... всё сваливаю с форума
Medevic
Цитата(kizarek @ 1:08:2008 - 14:54) *
дык потому и поменял что отлавить событие можно только при удалении документа, во вью то не поймаешь.

В этом же событии смотришь NotesUIWorkspace.CurrentView.ViewName
kizarek
Akupaka
так все замечательно удаляется.
Medevic
Цитата(Morpheus @ 1:08:2008 - 15:05) *
а где ж переход к след. документу

Нужно добавить. smile.gif

Цитата(kizarek @ 1:08:2008 - 15:06) *
так вообще не 1 документ удалятся не будет, а надо только чтобы определённой формы не удалялись)

Почему не будет?
kizarek
Цитата(Medevic @ 1:08:2008 - 15:12) *
В этом же событии смотришь NotesUIWorkspace.CurrentView.ViewName

дык это уже дело второе))) можно чтобы вообще не удалялись) не только из вью. по поводу вью я думал есть способ в событиях самой вью неразрешать удаление документов.
Akupaka
Цитата(Medevic @ 1:08:2008, 14:17 ) *
Почему не будет?

та не, его просто сбило с толку, что ты не инициализируешь док, а удаляешь один, по коду, вот он и уточняет, что он не один smile.gif
Medevic
Ну ладно. smile.gif
Хотя никто не мешает скопировать ссылки и удалить документ из самого документа. smile.gif

Цитата(Medevic @ 1:08:2008 - 15:24) *
Хотя никто не мешает скопировать ссылки и удалить документ из самого документа. smile.gif

Это если в зависимости от имени представления удалять. smile.gif
kizarek
Вот в общем что получилось:

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    On Error Goto ends
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim uidoc As NotesUIDocument
    Set db = Source.Database
    
    Dim doc2 As notesDocument
    Set collection = Source.Documents
    
    Set doc = collection.GetFirstDocument
    While Not(doc Is Nothing)
        Set doc2 = collection.GetNextDocument(doc)
        
        If doc.getitemvalue("Form")(0) = "Spr" Then
            Call collection.DeleteDocument(doc)
        End If
        
        Set doc = doc2
        Set doc2 = collection.GetNextDocument(doc)
    Wend
    Messagebox "Нельзя удалять справочники.",16,"Внимание!"
    
    continue = collection.Count > 0
ends:
    Exit Sub
End Sub


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

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
'On Error Goto ends
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim uidoc As NotesUIDocument
dim shMess as boolean
    Set db = Source.Database
    
    Dim doc2 As notesDocument
    Set collection = Source.Documents
shMess = false
    Set doc = collection.GetFirstDocument
    While Not(doc Is Nothing)
        Set doc2 = collection.GetNextDocument(doc)
        
        If doc.getitemvalue("Form")(0) = "Spr" Then
shMess = true
            Call collection.DeleteDocument(doc)
        End If
        
        Set doc = doc2
        'Set doc2 = collection.GetNextDocument(doc) ' эта строка лишняя! и из-за нее всегда будет ошибка, т.к. в конце-концов, doc станет равным Nothing, т.е. вся коллекция будет обработана, и метод GetNextDocument(Nothing) будет генерить ошибку!
    Wend
if shMess then Messagebox "Нельзя удалять справочники.",16,"Внимание!"
    
    continue = collection.Count > 0
ends:
    Exit Sub
End Sub



кроме всего прочего, нужно обработать спец. условия, чтобы была хоть какая-то возможность удаления этих доков, т.к. такая возможность когда-нить да появится...
Turochek
Добрый день.
Подскажите, как обработать событие OnClick
на вьюхе, используя LotusScript
Спасибо
Akupaka
по-идее, обработать можно только те события, для которых нотес сам создал шаблон обработчика...
kizarek
Ну или Java в помощь...
Akupaka
а чем тут ява поможет?..
Turochek
а кто-нибудь пользуется
ActiveX- контролами
т.е. - Create-Object-Control
какие плюсы/минусы
спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.