Удаление из вида

  • Автор темы Автор темы I123321
  • Дата начала Дата начала
Ну и естественно, это будет работать, только если в виде одна категолрия smile.gif

ну если многоуровневая - то можно делать так
Пример для 3-х категорий. Поиск документов для удаления по первым двум категориям

Код:
	Dim WS As New NotesUIWorkspace	
Dim uiview As NotesUIView
Dim view As NotesView
Dim category(1) As Variant
Dim dc As NotesDocumentCollection
Dim Session As New NotesSession	
Dim Db As NotesDatabase
Dim Doc As NotesDocument

Set DB = Session.CurrentDatabase
Set uiview = WS.CurrentView
Set Doc = db.GetDocumentByID( uiview.CaretNoteID )

category(0) = Doc.<название поля1>(0)
category(1) = Doc.<название поля2>(0)

Set View = DB.GetView( <Название вида> )
Set dc = view.GetAllDocumentsByKey( category, True)

Call dc.RemoveAll( True )

Call ws.ViewRefresh

где <название поля1>, <название поля2> - названия полей, по которым группируются документы
<Название вида> - вид с 2-мя первыми!!!! отсортированными полями <название поля1>, <название поля2>

Если надо удалить все документы по первой категории - то соответственно нужно только одно первое поле

исправил пару ошибочек

Ну или как сказал Omh - можно использовать db.Serach. тогда из моего примера нужно выкинуть
Код:
category(0) = Doc.<название поля1>(0)
category(1) = Doc.<название поля2>(0)

а Set View = DB.GetView( <Название вида> ) заменить на db.Serach и искать все по тем же полям (См. выше)
 
GetAll...ByKey иногда взглюкивают (лечится перестройкой load updall -R <db> -T <view>)
но можно жить с
Get...ByKey
там пригодится Getentry
далее от текущей бежим проверяя indentlevel по энтрисам
TIA указал - как найти положение выделенной категории
 
извеняюсь, что задаю опять вопрос, но я не могу понять что здесь надо
Код:
		Dim WS As New NotesUIWorkspace 
Dim uiview As NotesUIView
Dim view As NotesView
Dim category As Variant
Dim dc As NotesDocumentCollection
Dim Session As New NotesSession  
Dim Db As NotesDatabase
Dim Doc As NotesDocument
Set DB = Session.CurrentDatabase
Set uiview = WS.CurrentView
Set Doc = db.GetDocumentByID( uiview.CaretNoteID )
category = Doc.Name(0)
Name - поле в первой отсортированнойя колонке, но в ней выдает ошибку Object variable not set

не могу понять, теперь удаляется не вся категория с подкатегориями, а при выделении документа удаляется категория
 
Set Doc = db.GetDocumentByID( uiview.CaretNoteID )
category = Doc.Name(0)
в ней выдает ошибку Object variable not set
Прогресс налицо :-) Освойте еще дебагер - и будет вам счастье.
В дебагере вы можете заметить, что uiview.CaretNoteID содержит нечто, явно не явлющееся NoteID документа. И там же вы обнаружите, что Doc имеет значением( адресует ) Nothing.

Вы ходили по ссылке TIA на итертраст? Там лежит готовое решение по перебору документов в выбранной подкатегории.
 
Код:
	Dim NUIWS As New NotesUIWorkspace
Dim NDC As NotesDocumentCollection
Dim NDB As NotesDatabase
Dim NVN As NotesViewNavigator
Dim ND As NotesDocument
Dim strCaretNoteID As String

Set NDB = NUIWS.CurrentDatabase.Database
Set NVN = NUIWS.CurrentView.View.CreateViewNavFromCategory(NUIWS.CurrentView.CaretCategory)
Set ND = NVN.GetFirst.Document
Set NDC = view.GetAllDocumentsByKey( ???????, True)
Call NDC.RemoveAll( True )
Call NUIWS.ViewRefresh
не могу понять что сюда Set NDC = view.GetAllDocumentsByKey( ???????, True)


или как мне удалить документы?

не получается собрать коллекцию и ее удалить ;)
 
читал... читаю... но ничего не могу понять

мне просто очень надо, спешу, вот ничего уже и сообразить не могу...... может, если кто-то может, то помогите пожалуйста
 
пытаюсь сделать так, опять не то
Код:
	Dim NUIWS As New NotesUIWorkspace
Dim NDC As NotesDocumentCollection
Dim NDB As NotesDatabase
Dim NVN As NotesViewNavigator
Dim ND As NotesDocument
Dim view As NotesView

Set NDB = NUIWS.CurrentDatabase.Database
Set NVN = NUIWS.CurrentView.View.CreateViewNavFromCategory(NUIWS.CurrentView.CaretCategory)
Set ND = NVN.GetFirst.Document
category = ND.Name(0)
Set NDC = view.GetAllDocumentsByKey( category, True)
Call NDC.RemoveAll( True )
Call NUIWS.ViewRefresh
помогите, если кто-то может
 
I123321, слушай, это достаточно простое задание!
Читай внимательно хелп! Почитай пост
 
Мне показалась задачка интересная. Поэтому вот решение. :)
Немного переделал код с интертраста. Вместо прохода навигатором по всему представлению, сделал переход к нужной категории сразу и рекурсивный обход внутри. Мне кажется, так гораздо быстрее будет. Также пришлось использовать пустую коллекцию.
Код:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim NUIWS As New NotesUIWorkspace
Dim NV As NotesView
Dim NVN As NotesViewNavigator
Dim NVE As NotesViewEntry
Dim strCaretCategory As String

Set db = session.CurrentDatabase
strCaretCategory = NUIWS.CurrentView.CaretCategory
Set NV = NUIWS.CurrentView.View

Set dc = db.Search({}, Nothing, 0)
Dim ve As NotesViewEntry
Set NVN = NV.CreateViewNav()
Set NVE = NVN.GetPos(strCaretCategory, ".")

Call AddChilds(dc, nvn, nve)
Call dc.RemoveAll(True)
Call NUIWS.ViewRefresh()
End Sub

Sub AddChilds(dc As NotesDocumentCollection, nvn As NotesViewNavigator, nve As NotesViewEntry)
Dim ve As NotesViewEntry
Set ve = nvn.GetChild(nve)
While Not (ve Is Nothing)
Messagebox(ve.ColumnValues(Ubound(ve.ColumnValues)))
If ve.IsDocument Then Call dc.AddDocument(ve.Document)
Call AddChilds(dc, nvn, ve)
Set ve = nvn.GetNextSibling(ve)
Wend
End Sub

Ответственности за потерю данных не несу и всё такое. :)
 
помогите, если кто-то может
Походу треба разжевать ( см. пример Сергей Шабалина ( serEJa Shabalin ) на интертрасте )
1. Добавьте в ваш категоризованный вид первую колонку с формулой @DocNumber. На последней закладке в свойствах колонки взведите галку "Hide Column"
2. Повесьте на кнопку код:
Код:
Sub Click(Source As Button)
Dim NUIWS As New NotesUIWorkspace
Dim NV As NotesView
Dim NVN As NotesViewNavigator
Dim NVE As NotesViewEntry
Dim strCaretCategory As String
Dim blnContains As Boolean

blnContains = False
strCaretCategory = NUIWS.CurrentView.CaretCategory
Set NV = NUIWS.CurrentView.View
Set NVN = NV.CreateViewNav()
Set NVE = NVN.GetFirst
' пустая коллекция:
Dim collection As NotesDocumentCollection
Set collection = NV.Parent.Search( "" , Nothing , 0 )

Do While Not(NVE Is Nothing)
If Instr(NVE.GetPosition("."), strCaretCategory)=1 Then
blnContains = True
' добавляем документ в коллекцию:
If NVE.IsDocument Then 
On Error 4469 Resume Next
Call collection.AddDocument( nve.Document )
End If
Elseif blnContains Then
Exit Do
End If
Set NVE = NVN.GetNext(NVE)
Loop
if collection.count > 0 then Call collection.RemoveAll( True )
End Sub
 
в этой строке Call AddChilds(dc, nvn, nve) что не определено
 
Что? :)

Скопируй код и вставь в новую кнопку. Всё должно работать.
 
Процедура AddChilds описана ниже. Ты скопировал её в кнопку?
 
теперь еще лучше, только нажимаю на кнопку - выдает ошибку Лотуса и закрывается лотус

описана процедура ниже

теперь все сохраняется, только Лотус не работает

только нажимаю на кнопку - ЛОТУС ВЫРУБАЕТСЯ :)
 
доходит сюда Set NVE = NVN.GetPos(strCaretCategory, ".") и выбрасывает отом из Лотуса
 
Интересно. Какая версия клиента?
Ты добавил первый столбец с формулой @DocNumber?
 
Мы в соцсетях:

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