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

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

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

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

Метод Getalldocumentsbykey

dimat

Well-known member
31.07.2008
508
0
BIT
0
Всем привет!
Пытаюсь получить коллекцию документов из представления (ппервый и второй столбцы отсортированы) следущим способом:
Код:
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

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Скорее всего с типами. Ты дату передаешь как строку. В первом столбце она тоже как строка?
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Скорее всего с типами. Ты дату передаешь как строку. В первом столбце она тоже как строка?
Скорее всего в этом проблема, в 1ом столбце она Дата, ну по крайней мере в документе это поле типа Дата, но как сделать массив с элементами разных типов (в данном случае Дата и строка)? Или есть еще какие то способы?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
ужас представить себе не могу чтобы использовали ключи типа дата
зачем такой подход?
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Еще вопрос: Возможно ли с помощью указаного метода сформировать коллекцию по диапазону дат? например 02,02,2009-07,02,2009
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Можно. 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" (Несоответствие типов).
 
D

divankin

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

dimat

Well-known member
31.07.2008
508
0
BIT
0
Там же написано - ошибка в несоответствии типов.
NotesDateRange.StartDateTime типа NotesDateTime, а в поле типа дата значение будет Variant of type Date
Надо создавать новый объект NotesDateTime, присваивать ему дату через LSLocalTime, затем обрубать время SetAnyTime.

Divankin, спасибо, впринципе все понятно, но мог бы ты на примере показать?
 
A

Akupaka

Надо создавать новый объект 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

Well-known member
31.07.2008
508
0
BIT
0
Код:
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

Well-known member
31.07.2008
508
0
BIT
0
С помощью метода 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, хотя в представлении "Неделя"(первый и второй столбцы отсортированы), указаным ключам удовлетворют больше документов.

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
причины от индексации (она может не закончиться еще)
до ошибок в символах
сущ. способ поиска digestsearch
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
сущ. способ поиска digestsearch
Указаный метод не подхоит ;) . т.к. он позволяет искать документы только по 1 ключу. Есть еще какие нибудь варианты?

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

Можно по подробней на этом месте
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
идут массовые изменения во вьшке, а она большая, переиндексаци занимает опред. время, а в этот момент потупает запрос на поиск по ключу...
по дайжесту - никто не мешает обединить два критерия
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
зачем - в текст и контектация
 
Мы в соцсетях:

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