Метод Getalldocumentsbykey

dimat

Lotus team
31.07.2008
516
0
#1
Всем привет!
Пытаюсь получить коллекцию документов из представления (ппервый и второй столбцы отсортированы) следущим способом:
Код:
Dim ns As New NotesSession
Dim db As NotesDatabase
Dim view as notesview
Dim keys(1) As String
Dim dc As NotesDocumentCollection
keys(0)=Today
keys(1)="Петров Петр Петрович"
Set db=ns.CurrentDatabase
Set view=db.GetView("Демо")
Set dc=views.GetAllDocumentsByKey(keys,False)
После выполнения возвращает пустую коллекцию, хотя документы с указаными ключами в представлении есть....
В чем ошибка?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Скорее всего с типами. Ты дату передаешь как строку. В первом столбце она тоже как строка?
 

dimat

Lotus team
31.07.2008
516
0
#3
Скорее всего с типами. Ты дату передаешь как строку. В первом столбце она тоже как строка?
Скорее всего в этом проблема, в 1ом столбце она Дата, ну по крайней мере в документе это поле типа Дата, но как сделать массив с элементами разных типов (в данном случае Дата и строка)? Или есть еще какие то способы?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#6
ужас представить себе не могу чтобы использовали ключи типа дата
зачем такой подход?
 

dimat

Lotus team
31.07.2008
516
0
#8
Еще вопрос: Возможно ли с помощью указаного метода сформировать коллекцию по диапазону дат? например 02,02,2009-07,02,2009
 

dimat

Lotus team
31.07.2008
516
0
#10
Можно. NotesDateRange в качестве ключа.
Код выполняется по нажатию кнопки на форме:

Код:
Dim period As NotesDateRange
Set period=ns.CreateDateRange
Set period.StartDateTime=startdate
Set period.EndDateTime=enddate
startdate и enddate это поля на форме с типом дата/время.
в процессе выполнения вот на этих строчках:
Код:
Set period.StartDateTime=startdate
Set period.EndDateTime=enddate
ошибка "Type mismatch" (Несоответствие типов).
 

divankin

Senjor developer
13.08.2009
182
0
#11
Там же написано - ошибка в несоответствии типов.
NotesDateRange.StartDateTime типа NotesDateTime, а в поле типа дата значение будет Variant of type Date
Надо создавать новый объект NotesDateTime, присваивать ему дату через LSLocalTime, затем обрубать время SetAnyTime.
 

dimat

Lotus team
31.07.2008
516
0
#12
Там же написано - ошибка в несоответствии типов.
NotesDateRange.StartDateTime типа NotesDateTime, а в поле типа дата значение будет Variant of type Date
Надо создавать новый объект NotesDateTime, присваивать ему дату через LSLocalTime, затем обрубать время SetAnyTime.
Divankin, спасибо, впринципе все понятно, но мог бы ты на примере показать?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
Надо создавать новый объект NotesDateTime
можно использовать свойство NotesItem.DateTimeValue
или notesDocument.GetItemValueDateTimeArray( itemName$ )

Код:
Set period.StartDateTime = doc.GetFirstItem("startdate").DateTimeValue
Set period.EndDateTime = doc.GetFirstItem("enddate").DateTimeValue

Set period.StartDateTime = doc.GetItemValueDateTimeArray("startdate")(0)
Set period.EndDateTime = doc.GetItemValueDateTimeArray("enddate")(0)
 

dimat

Lotus team
31.07.2008
516
0
#14
Код:
dim period as notesdaterange
dim sf as string
dim db as notesdatabase
sf=|Form="formdemo" & formdatedemo=period|
db.search(sf,nothing,0)
formdatedemo=period вот здесь как правильно?

Как в строке запроса Метода Search прописать условие чтоб поле с типом дата соответствовало указаному интервалу дат?
т.е. в данном случае это поле formdatedemo, а period это переменная типа NotesDateRange
 

dimat

Lotus team
31.07.2008
516
0
#15
С помощью метода GetAllDocumentsBykey не все документы попадают в коллекцию:
Код:
Dim keys(1) as Variant
Dim dcdemo as NotesDocumentCollection
Dim period as NotesDateRange
Dim vdemo=db.getview("Неделя")
set keys(0)=period
keys(1)="Петров Иван Иванович"
Set dcdemo=vdemo.GetAllDocumentsByKey(keys,true)
После выполнения dc.count=2, хотя в представлении "Неделя"(первый и второй столбцы отсортированы), указаным ключам удовлетворют больше документов.

Какие могут быть причины?
Или какие есть способы поиска документов по указаным ключам?
 

dimat

Lotus team
31.07.2008
516
0
#17
Указаный метод не подхоит ;) . т.к. он позволяет искать документы только по 1 ключу. Есть еще какие нибудь варианты?

причины от индексации (она может не закончиться еще)
Можно по подробней на этом месте
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#18
идут массовые изменения во вьшке, а она большая, переиндексаци занимает опред. время, а в этот момент потупает запрос на поиск по ключу...
по дайжесту - никто не мешает обединить два критерия
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#20
зачем - в текст и контектация