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

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

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

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

NotesDocumentCollection.DeleteDocument

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

nayke

DeleteCol объявлена в Declare агента. пробовал объявлять в секции inicialize и передавать в процедуру

Sub DeleteFromCol( Col As NotesDocumentCollection, ADoc As NotesDocument)

Код:
Set DeleteCol=CurrentDB.Search({((Form="A")|(Form="B"))},Nothing,0
Set NoDeleteCol=CurrentDB.Search(Filter,Nothing,0)
'Filter - запрос возвращающий документы формы С(ответа на А) либо формы В

While NoDeleteCol.Count>0
Set doc=NoDeleteCol.GetFirstDocument
Call NoDeleteCol.DeleteDocument(doc)
If doc.form(0) = "C" Then Set doc=CurrentDB.GetDocumentByUNID(doc.~$REF(0))
Call DeleteFromCol(doc)
Wend

Sub DeleteFromCol(ADoc As NotesDocument)
On Error Goto lbExit
Call DeleteCol.DeleteDocument(ADoc)
Exit Sub
lbExit:
Exit Sub
End Sub

в итоге не один документ из коллекции не удаляется все с ошибкой - документ не является документом из данной коллекции. Как обойти идеи есть просто не хочется нагромождать может так кто что подскажет..
p.s. doc, передаваемый в DeleteFromCol имеет форму A или B и находится в CurrentDB, т.е. в коллекции есть полюбому
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
nayke
Ну так правильно... ты берешь документ из одной коллекции, а удаляешь в другой :)
Не правильно это
Usage
The specified document must have originated in this collection. If the document does not exist in the collection, or if it was removed from the database by a RemoveAll operation, an error will be raised.
В Sub DeleteFromCol(ADoc As NotesDocument) надо искать этот документ и удалять. Medevic дело говорит
 
O

Omh

Код:
doc.~$REF(0)
Мрачноватя конструкция
Не лучше ли Doc.GetItemValue("$REF")(0)?
 
H

hosm

nayke Doc.ParentDocumentUNID - самое оно, родное для скрипта =)
:) Omh вчера я круче видела в коде: doc.~$~$HTMLHEAD=...
 
N

nvyush

nayke Doc.ParentDocumentUNID - самое оно, родное для скрипта =)
И, кстати, работает заметно быстрее. В тестовом агенте на 1000 итераций было затрачено для Doc.GetItemValue("$REF")(0) — 31 мс, для Doc.ParentDocumentUNID — 16 мс (по данным Profile Results).
 
Мы в соцсетях:

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