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

Kizarek86

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

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

не нашел как осуществлять поиск по этим критериям, подскажите плиз как реализовать.
 
M

morpheus

Для: kizarek
Пользуйтесь db.Search
а формулу отбора берите как в виде ( тока SELECT уберите ) и всё , например
{Form = "MY_COOL_FORM" & MY_DATE_FIELD < [30.07.2007] & MY_DATE_FIELD > [30.07.2008] }
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Morpheus, Form = "MY_COOL_FORM" так не хочет сравнивать. Как с помощью формул проверить на соответствие форме? в виде просто текстом приписывается "использовать форму "такую_то_такую"".

У db.search как я понял обязательно должно быть 3 параметра ("формула", дата после которой изменен\создан документ, и максимальное число документов посещаемое в коллекцию)
 
R

Ronchik

Для: 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
 
M

morpheus

Для: 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)
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Morpheus, спасибо, всё работает. хелп читаю в первую очередь,и примерчик видел, не всегда понятно просто, например про {} не знал.
 
G

GROMILA

Тут есть одна засада!!!!
Коллекция по-умолчанию не отсортирована :)))))
Толку от такой выборки?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: GROMILA
А кто мешает отсортировать ?
 
K

Kee_Keekkenen

про отсортировать.. есть более простой способ отсортировать, чем коллекция --> вариант --> сортировать документы по значению поля ?
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
ещё пару вопросов. Создана коллекция документов, как обратиться(считать\записать информацию) в какое либо поля этого документа? И как лучше реализовать критерий отбора по дате? т.е. запрашивать ввод дат с клавиатуры, желательно чтобы выбором из календаря, возможно ли такое?
 
M

morpheus

<!--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]
Подробнее?!
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Morpheus, есть к примеру набор некоторых документов, в которых ведется статистика некоторых параметров за день, хотелось бы сделать чтобы можно было задав интервал дат получить в некоторой другой форме статистику по документам за период. как реализовать некий запрос при клике на кнопку, который запросит интервал дат, после чего создаст отчет (ну незнаю,может форму новую, в которой отобразиться эта статистика, или окно какое нибудь всплывающее)

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

з.ы. чёт вы за меня прям всё делаете, ещё раз спасибо за помощь,сам бы по пол года искал как сделать
 
M

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
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Думаю проще сделать, кликаем на кнопку, открываеться форма, в которой и интервалы этих дат, и сам отчёт будет. По клику на другую кнопку происходит подсчёт статистики, и вывод её в определённые поля открытой формы. Вопросик очередной возник, как обратиться к полям открытой формы? т.е. соответственно считать дату, и записать в поля статистику.
 
M

morpheus

<!--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"

и т.д.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Кодировать на лотусе первый день начал, отсюда и глупые вопросы) Ещё раз большое спасибо, всё работает.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Код:
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 в настройках поля имеют такой же формат даты, почему ошибка возникает?ну точнее не обираються документы в коллекцию при втором варианте.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--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.
К тому же зачем так много скобок? Здесь они вообще не нужны.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Medevic, скобки из формулы созданой для вьюхи.

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

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

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