Getalldocumentsbykey

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#1
Dim keys(1) as Variant
Dim dr as NotesDateRange
Set keys(0)=dr
keys(1)="text string"
Dim view as NotesView
view.GetAllDocumentsByKey(keys)
Возвращает не все документы, которые удовлетворяют указанному ключу.
view:
1-ая колонка категоризированая и отсортированая тип - Date
2-ая колонка категоризированая и отсортированая тип - General

В чем может быть проблема?
 

Dragon108

Well-Known Member
19.01.2010
265
0
30
Россия
#3
Dim keys(1) as Variant
Dim dr as NotesDateRange
Set keys(0)=dr
keys(1)="text string"
Dim view as NotesView
view.GetAllDocumentsByKey(keys)
Возвращает не все документы, которые удовлетворяют указанному ключу.
view:
1-ая колонка категоризированая и отсортированая тип - Date
2-ая колонка категоризированая и отсортированая тип - General

В чем может быть проблема?

Может в этом

Set notesDocumentCollection = notesView.GetAllDocumentsByKey( keyArray [, exactMatch% ] )

exactMatch%

Boolean. Optional. Specify True if you want to find an exact match. All documents that match the key exactly are returned. If you specify False (the default) or omit this parameter, a partial match succeeds. A partial match returns all documents that match the initial characters of the key.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#4
Dragon108
Проблема в отборе по диапазону дат. Если первый ключ — диапазон дат, то последующие ключи работать отказываются.
 

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#5
Проблема в отборе по диапазону дат. Если первый ключ — диапазон дат, то последующие ключи работать отказываются.
Сделал отбор только по диапазону дат, ситуация не изменилась.
Какие еще есть варианты?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#6
Сделал отбор только по диапазону дат, ситуация не изменилась.
Что означает "ситуация не изменилась"? Если первая колонка содержит "датовые" даты, а не строковые, и диапазон дат в ключе задан верно, должны отбираться все документы, содержащиеся в категориях между датами диапазона включительно.
 

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#7
Что означает "ситуация не изменилась"? Если первая колонка содержит "датовые" даты, а не строковые, и диапазон дат в ключе задан верно, должны отбираться все документы, содержащиеся в категориях между датами диапазона включительно.
Вот и я не могу почему так.

Код:
Dim dr as NotesDateRange
Set nvec=vpde.GetAllEntriesByKey(dr,True)
Print nvec.count
Без true тоже пробовал
nvec.count=1
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#8
У меня такое работает:
Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView

Dim startDateTime As NotesDateTime
Dim endDateTime As NotesDateTime
Dim dateRange As NotesDateRange
Dim entries As NotesViewEntryCollection
Dim entry As NotesViewEntry
Dim ws As New NotesUIWorkspace

Set db = session.CurrentDatabase
Set doc = db.CreateDocument()

'подформа "DateSubform" содержит таблицу с двумя полями типа дата "DateFrom" и "DateTo"
If Not ws.DialogBox("DateSubform", True, True, False, False, False, False, db.Title, doc, True, False, True) Then Exit Sub

Set startDateTime = session.CreateDateTime(doc.GetItemValue("DateFrom")(0))
Set endDateTime = session.CreateDateTime(doc.GetItemValue("DateTo")(0))
Call endDateTime.AdjustHour(23)
Call endDateTime.AdjustMinute(59)
Call endDateTime.AdjustSecond(59)

Set dateRange = session.CreateDateRange()
Set dateRange.StartDateTime = startDateTime
Set dateRange.EndDateTime = endDateTime

Redim key(0) As Variant
Set key(0) = dateRange

Set view = db.getView("viewName")
Set entries = view.GetAllEntriesByKey(key, True)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 429
351
homepage.mac.com
#9
а где инициализация диапазона? ;)
а с др. строны - count не показатель, если колонка мультивалюйная
 

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#10
Call endDateTime.AdjustHour(23) Call endDateTime.AdjustMinute(59) Call endDateTime.AdjustSecond(59)
это для чего?

Добавлено:
а где инициализация диапазона? wink.gif
а с др. строны - count не показатель, если колонка мультивалюйная
инициализация есть и с ней все в порядке, проверял.
а с др. строны - count не показатель, если колонка мультивалюйная
колонка не мультивалюйная
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 429
351
homepage.mac.com
#11
остаётся предположить индексы...
нек. раработчики очень любят ковырять базу в дизайнере...
а не через шаблон и обновление из него, и часто наступают на грабли
 

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#12
остаётся предположить индексы...
нек. раработчики очень любят ковырять базу в дизайнере...
а не через шаблон и обновление из него, и часто наступают на грабли
С индексами тоже все в порядке...