• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Ну и естественно, это будет работать, только если в виде одна категолрия 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 и искать все по тем же полям (См. выше)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
GetAll...ByKey иногда взглюкивают (лечится перестройкой load updall -R <db> -T <view>)
но можно жить с
Get...ByKey
там пригодится Getentry
далее от текущей бежим проверяя indentlevel по энтрисам
TIA указал - как найти положение выделенной категории
 
I

I123321

извеняюсь, что задаю опять вопрос, но я не могу понять что здесь надо
Код:
		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

не могу понять, теперь удаляется не вся категория с подкатегориями, а при выделении документа удаляется категория
 
T

turumbay

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

Вы ходили по ссылке TIA на итертраст? Там лежит готовое решение по перебору документов в выбранной подкатегории.
 
I

I123321

Код:
	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)


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

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

I123321

читал... читаю... но ничего не могу понять

мне просто очень надо, спешу, вот ничего уже и сообразить не могу...... может, если кто-то может, то помогите пожалуйста
 
I

I123321

пытаюсь сделать так, опять не то
Код:
	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
помогите, если кто-то может
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
I123321, слушай, это достаточно простое задание!
Читай внимательно хелп! Почитай пост
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Мне показалась задачка интересная. Поэтому вот решение. :)
Немного переделал код с интертраста. Вместо прохода навигатором по всему представлению, сделал переход к нужной категории сразу и рекурсивный обход внутри. Мне кажется, так гораздо быстрее будет. Также пришлось использовать пустую коллекцию.
Код:
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

Ответственности за потерю данных не несу и всё такое. :)
 
T

turumbay

помогите, если кто-то может
Походу треба разжевать ( см. пример Сергей Шабалина ( 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
 
I

I123321

в этой строке Call AddChilds(dc, nvn, nve) что не определено
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Что? :)

Скопируй код и вставь в новую кнопку. Всё должно работать.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Процедура AddChilds описана ниже. Ты скопировал её в кнопку?
 
I

I123321

теперь еще лучше, только нажимаю на кнопку - выдает ошибку Лотуса и закрывается лотус

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

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

только нажимаю на кнопку - ЛОТУС ВЫРУБАЕТСЯ :)
 
I

I123321

доходит сюда Set NVE = NVN.GetPos(strCaretCategory, ".") и выбрасывает отом из Лотуса
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Интересно. Какая версия клиента?
Ты добавил первый столбец с формулой @DocNumber?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!