• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Коллекции документво

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

Kizarek86

Green Team
20.07.2007
876
8
Необходимо составить коллекцию документов по текущей БД, в коллекцию должны войти документы определенной формы (форма1 к примеру), созданные за определенный период (дата1 и дата2)

Код:
	Dim collection As NotesDocumentCollection
Dim n As Integer
Set collection = db.FTSearch( ?????)

не нашел как осуществлять поиск по этим критериям, подскажите плиз как реализовать.
 
Для: kizarek
Пользуйтесь db.Search
а формулу отбора берите как в виде ( тока SELECT уберите ) и всё , например
{Form = "MY_COOL_FORM" & MY_DATE_FIELD < [30.07.2007] & MY_DATE_FIELD > [30.07.2008] }
 
Morpheus, Form = "MY_COOL_FORM" так не хочет сравнивать. Как с помощью формул проверить на соответствие форме? в виде просто текстом приписывается "использовать форму "такую_то_такую"".

У db.search как я понял обязательно должно быть 3 параметра ("формула", дата после которой изменен\создан документ, и максимальное число документов посещаемое в коллекцию)
 
Для: kizarek
<!--QuoteBegin-Morpheus+30:07:2007, 09:41 -->
<span class="vbquote">(Morpheus @ 30:07:2007, 09:41 )</span><!--QuoteEBegin-->а формулу отбора берите как в виде ( тока SELECT уберите ) и всё , например
[snapback]73724" rel="nofollow" target="_blank[/snapback]​
[/quote]
читай внимательней что написали напиши сначала свою формулу на виде потомо вставишь в db.Search
 
Для: kizarek

Вы в хэлп хоть иногда смотрите??? примеры:

2. This script uses @IsResponseDoc to get a collection of all the response documents in a database.
Код:
Dim db As New NotesDatabase("Katmandu","somedocs.nsf")
Dim collection As NotesDocumentCollection
Set collection = db.Search("@IsResponseDoc",Nothing,0)


<!--QuoteBegin-kizarek+30:07:2007, 10:13 -->
<span class="vbquote">(kizarek @ 30:07:2007, 10:13 )</span><!--QuoteEBegin-->Form = "MY_COOL_FORM" так не хочет сравнивать
[snapback]73728" rel="nofollow" target="_blank[/snapback]​
[/quote]
- это кто сказал? дэбаггер ???
имейте в виду что если в строке запроса есть " - кавычка то строку надо выделять с обоих боков { }
{} - это теже ковычкки которые могут содеражать в себе кавычки ( эх.. каламбур сочинил )

Пример
Set collection = db.Search({Form = "InCard_Doc" & RegDate < [30.07.2007] & RegDate > [30.07.2008] },Nothing,0)
 
Morpheus, спасибо, всё работает. хелп читаю в первую очередь,и примерчик видел, не всегда понятно просто, например про {} не знал.
 
Тут есть одна засада!!!!
Коллекция по-умолчанию не отсортирована :)))))
Толку от такой выборки?
 
Для: GROMILA
А кто мешает отсортировать ?
 
про отсортировать.. есть более простой способ отсортировать, чем коллекция --> вариант --> сортировать документы по значению поля ?
 
ещё пару вопросов. Создана коллекция документов, как обратиться(считать\записать информацию) в какое либо поля этого документа? И как лучше реализовать критерий отбора по дате? т.е. запрашивать ввод дат с клавиатуры, желательно чтобы выбором из календаря, возможно ли такое?
 
<!--QuoteBegin-kizarek+30:07:2007, 12:06 -->
<span class="vbquote">(kizarek @ 30:07:2007, 12:06 )</span><!--QuoteEBegin-->желательно чтобы выбором из календаря, возможно ли такое?
[snapback]73759" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вот Вы и пришли к поисковой форме, делайте как нравиться, есть поля типа ДАТА, в них можно выбирать дату как в календаре
Делаете форму с полями выбора и бальшой кнопкой поиск )))


<!--QuoteBegin-kizarek+30:07:2007, 12:06 -->
<span class="vbquote">(kizarek @ 30:07:2007, 12:06 )</span><!--QuoteEBegin-->записать информацию
[snapback]73759" rel="nofollow" target="_blank[/snapback]​
[/quote]
Запись одого поля во все доки
StampAll method - Replaces the value of a specified name in all documents in a collection.

<!--QuoteBegin-kizarek+30:07:2007, 12:06 -->
<span class="vbquote">(kizarek @ 30:07:2007, 12:06 )</span><!--QuoteEBegin-->И как лучше реализовать критерий отбора по дате
[snapback]73759" rel="nofollow" target="_blank[/snapback]​
[/quote]
Подробнее?!
 
Morpheus, есть к примеру набор некоторых документов, в которых ведется статистика некоторых параметров за день, хотелось бы сделать чтобы можно было задав интервал дат получить в некоторой другой форме статистику по документам за период. как реализовать некий запрос при клике на кнопку, который запросит интервал дат, после чего создаст отчет (ну незнаю,может форму новую, в которой отобразиться эта статистика, или окно какое нибудь всплывающее)

Коллекцию уже умею нужную делать, сейчас пытаюсь прошагать по этой коллекции)

з.ы. чёт вы за меня прям всё делаете, ещё раз спасибо за помощь,сам бы по пол года искал как сделать
 
<!--QuoteBegin-kizarek+30:07:2007, 12:42 -->
<span class="vbquote">(kizarek @ 30:07:2007, 12:42 )</span><!--QuoteEBegin-->ак реализовать некий запрос при клике на кнопку, который запросит интервал дат,
[snapback]73768" rel="nofollow" target="_blank[/snapback]​
[/quote]
делаете малеькую субформу(назовем sfQueryDate) с двумя полями в которые будут вноситься интервалы дат.
далее в документе на кнопкепоиск зделать заброс диалогбоксом(c sfQueryDate в параметре формы) . ну а дальше что Вам вернёт запрос так и будет(вимание,датовые поля в sfQueryDate и в основой Вашей форме должны иметь одинаковые имена ).
после кликанья на запросе ОК в ваш гл.документ попадут значения датовых полей, всё теперь можно строить поиск - > составлять поисковую строку и выпонять собственно сам Search
 
Думаю проще сделать, кликаем на кнопку, открываеться форма, в которой и интервалы этих дат, и сам отчёт будет. По клику на другую кнопку происходит подсчёт статистики, и вывод её в определённые поля открытой формы. Вопросик очередной возник, как обратиться к полям открытой формы? т.е. соответственно считать дату, и записать в поля статистику.
 
<!--QuoteBegin-kizarek+30:07:2007, 13:14 -->
<span class="vbquote">(kizarek @ 30:07:2007, 13:14 )</span><!--QuoteEBegin-->Вопросик очередной возник, как обратиться к полям открытой формы?
[snapback]73776" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ну Вы даете
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace ' рабочее пространство
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument

Set uidoc = workspace.CurrentDocument ' тек.документ
Set doc = uidoc.Document ' документ

msgbox doc.Form(0) ' выводит сообщение в тек. документе о том что содержиться в поле Form
doc.Form = "My Form" ' присваивает полю Form зачение "My Form"

и т.д.
 
Кодировать на лотусе первый день начал, отсюда и глупые вопросы) Ещё раз большое спасибо, всё работает.
 
Код:
Set collection = db.Search( {((Form = "Form_LNK")) & ((@Created >= [02.07.2007] & @Created <= [30.07.2007]))},Nothing,0 )

меняем на
Код:
Set collection = db.Search( {((Form = "Form_LNK")) & ((@Created >= docST.stDate1 & @Created <= docST.stDate2))},Nothing,0 )

Где stDate1, stDate2 в настройках поля имеют такой же формат даты, почему ошибка возникает?ну точнее не обираються документы в коллекцию при втором варианте.
 
<!--QuoteBegin-kizarek+30:07:2007, 15:22 -->
<span class="vbquote">(kizarek @ 30:07:2007, 15:22 )</span><!--QuoteEBegin-->Где stDate1, stDate2 в настройках поля имеют такой же формат даты, почему ошибка возникает?ну точнее не обираються документы в коллекцию при втором варианте.
[snapback]73789" rel="nofollow" target="_blank[/snapback]​
[/quote]
Потому второй вариант равносилен тому, что ты напишешь date1 = "docST.stDate1", вместо date1 = docST.stDate1.
К тому же зачем так много скобок? Здесь они вообще не нужны.
 
Medevic, скобки из формулы созданой для вьюхи.

Потому второй вариант равносилен тому, что ты напишешь date1 = "docST.stDate1", вместо date1 = docST.stDate1.

как реализовать то правильно тогда?)
 
Мы в соцсетях:

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