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

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

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

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

Про папки.

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

Grrr

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Метод NotesDatabase.Search. На форуме много раз было.
Если нужно сделать только вывод в эксель, то папки не нужны.
 
A

Akupaka

можно и без них, но почему не нужны? :rolleyes: папка может послужить буфером перед экспортом, т.е. можно увидеть какие доки туда попали, выделить только нужные, к примеру... но это так, размышления :)
 
G

Grrr

можно и без них, но почему не нужны? :) папка может послужить буфером перед экспортом, т.е. можно увидеть какие доки туда попали, выделить только нужные, к примеру... но это так, размышления ;)

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

Grrr

Правильно ли я делаю (взял из разных тем форума) и доработал:
--
На открытие в папке (shared, private on first use):
Sub Queryopen(Source As Notesuiview, Continue As Variant)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
Set collection=db.AllDocuments
Call collection.RemoveAllFromFolder( "myfolder")
End Sub
--
В папке вызываю форму поиска "SeachForm", в которой есть поля выбора формы, автора, статуса, ну и интервал дат.:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim searchDoc As NotesDocument
Dim dc As NotesDocumentCollection
Dim find As String

Set searchDoc = New NotesDocument(session.CurrentDatabase)
If ws.DialogBox("SearchForm", True, True, False, False, False, False, "Search", searchDoc , True) Then
find = {(Form = "} + Cstr(searchDoc.FormSelect(0)) + {")}
find = find + {&(Author = "} + Cstr(searchDoc.cAuthor(0)) + {")}
find = find + {&(Status = "} + Cstr(searchDoc.cStatus(0)) + {")}
find = find + {&@Created >= @TextToTime("} + searchDoc.Date1(0) + {")}
find = find + {&(@Created <= @TextToTime("} + searchDoc.Date2(0) + {"))}

Set dc = session.CurrentDatabase.Search(find, Nothing, 0)
Messagebox dc.count
Call dc.PutAllInFolder("myfolder", False)
Call ws.ViewRefresh
End If
End Sub
--
Когда только начинал писать скриптик без указания формы вылетело: "Notes error: To move a response document to a folder that shows response hierarchy you need to move the topmost parent of the response (asd)". Почему скрипт не отработал без указания формы главного документа? Как я понял надо перенести самый верхний уровень документов, чтобы перенеслись и респонсы? Есть ли формула для переноса сразу всех документов включая респонсы?
 
M

morpheus

Grrr
неа, лучше удалять не все документы базы из папки, а только те которые в этой папке есть

Set collection=db.GetAllDocumentsByKey ...

убрать у папки свойсто Show heararchy

да и сюдя по коду вы исключаете возможность НЕ задать один из параметров поиска
 
G

Grrr

"неа, лучше удалять не все документы базы из папки, а только те которые в этой папке есть". Пожалуйста объясните в чём разница, скорость работы или какие то нюансы?

По поводу "да и сюдя по коду вы исключаете возможность НЕ задать один из параметров поиска", согласен и хотелось бы узнать поподробнее. Как я понимаю необходимо будет добавить возможность исключить некоторые критерии поиска путём задания условий, в виде булевых флажков (true,false), у каждого из полей? Как лучше всего это реализовать.?

Как уже говорил выше, мне необходимо создать скрипт отбора документов(главных, респонсов, респонсов-респонсов), по данным полей(как в скрипте, включая интервал дат), которые будут помещены в папку и далее экспортированы в excel. Правильный ли способ поиска использую? Слышал про другие ft, bykey будут ли они служить лучшей альтернативой search в данном КОНКРЕТНОМ случае?
 
M

morpheus

Grrr
Пожалуйста объясните в чём разница, скорость работы или какие то нюансы?
разница в том с каким кол-м документов работать. Юрать ВСЕ документы базы или только нужные. Можете поэксперементировать по скорости. Что быстрее не скажу сразу. Моё имхо работать только с нужными нам документами.

, согласен и хотелось бы узнать поподробнее.
У меня например реализовано просто добавление в формулу поиска тех параметров, поля для которых заданны
Получиться чтото вроде :
Код:
find = {(Form = "} + Cstr(searchDoc.FormSelect(0)) + {")}
if Len( searchDoc.cAuthor(0) ) > 0 then find = find + {&(Author = "} + Cstr(searchDoc.cAuthor(0)) + {")}
и т.д.
Правда у меня вообще немного по другому.

Слышал про другие ft, bykey будут ли они служить лучшей альтернативой search в данном КОНКРЕТНОМ случае?
У вас нет заранее извесного набора параметров, поэтому search в данном случае будет лучше. С другой сторны я не могу понять зачем вообще использовать папки, если у Вас есть готовая колекция документов. Вот и экспортите сразу эту коллекцию. в эксель. Работа с папкой мне кажеться тут вообще лишней, имхо.
 
Мы в соцсетях:

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