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

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

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

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

Getalldocumentsbykey

dimat

Well-known member
31.07.2008
508
0
BIT
0
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

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

Dragon108

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.
 
N

nvyush

Dragon108
Проблема в отборе по диапазону дат. Если первый ключ — диапазон дат, то последующие ключи работать отказываются.
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Проблема в отборе по диапазону дат. Если первый ключ — диапазон дат, то последующие ключи работать отказываются.
Сделал отбор только по диапазону дат, ситуация не изменилась.
Какие еще есть варианты?
 
N

nvyush

Сделал отбор только по диапазону дат, ситуация не изменилась.
Что означает "ситуация не изменилась"? Если первая колонка содержит "датовые" даты, а не строковые, и диапазон дат в ключе задан верно, должны отбираться все документы, содержащиеся в категориях между датами диапазона включительно.
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Что означает "ситуация не изменилась"? Если первая колонка содержит "датовые" даты, а не строковые, и диапазон дат в ключе задан верно, должны отбираться все документы, содержащиеся в категориях между датами диапазона включительно.
Вот и я не могу почему так.

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

nvyush

У меня такое работает:
Код:
	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
7 941
609
BIT
214
а где инициализация диапазона? ;)
а с др. строны - count не показатель, если колонка мультивалюйная
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Call endDateTime.AdjustHour(23) Call endDateTime.AdjustMinute(59) Call endDateTime.AdjustSecond(59)
это для чего?

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
остаётся предположить индексы...
нек. раработчики очень любят ковырять базу в дизайнере...
а не через шаблон и обновление из него, и часто наступают на грабли
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
чудес не бывает ;)
выкладывайте базу...
 
Мы в соцсетях:

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