• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Воборка

  • Автор темы Автор темы Fugitive
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
F

Fugitive

Здравствуйте ! Я только начал заниматься Lotus и у меня возник вопрос.
Я в форме документа в свойстве querysave описал с помощью цикла сравнение на не совпадение поля в с полем из других документов. База примерно 1000 доакументов. Все вроде работает. Но цикл он проходит за 2-3 секунды.....А записей всего лишь 1000, а если будет 100 000 ?????? Как я понял можно написать агент который будет это все гнать на сервере. Но что ради такой элементарной операцией нужно теперь замарачиваться на агент ??? Может быть есть более простой и быстрый способ получить выборку документов с критерием отбора ??????
 
Для: Fugitive, как выглядит цикл ? Может есть способ заменить его @Dblookup или GetDocumentByKey ? Будет гораздо быстрей.
У меня база ~5500 записей. Поиск происходит при выходе из поля. Сделан через GetDocumentByKey. Работает меньше секунды (почти мгновенно). Думаю, что если сделать через Evaluate({@DbLokkup(...)}) будет вообще мгновенно.
 
Спасибо. Не знал про такие методы. Прочитал про getdocumentbykey, можно ли в массиве, который передается как параметр написать логическое выражение ????
 
Пиши. Но оно пойдет как строка для поиска.
Если нужно искать по формуле, то попробуй notesDatabase.Search. Но, скорее всего, будет медленнее.
 
Для реализации быстрого поиска по базе данных необходимо создать и затем периодически обновлять индекс этой базы данных, а для получения выборки документов согласно определенным критериям - пользоваться методом NotesDatabase.FTSearch
 
Возник вопрос: можно ли в методах Search или FTsearch использовать условия что-то типа этого (...) or (...) ?
 
Извините за глупый вопрос. Не пойму в чем дело.
Если делать так:

searchFormula$ = {dv="new2"}
Set collection_2 = db.Search(searchFormula$,Nothing,0)

все работает и возвращает один документ
А если так:

so_dv=Source.FieldGetText( "dv" )
searchFormula$ = {dv=so_dv}
Set collection_2 = db.Search(searchFormula$,Nothing,0)

упорно возвращает ноль документов.
???
 
чуть чуть ошибся не ноль возвращает а 347. Короче не правильно !
 
Fugitive

Попробуй так:

Код:
searchFormula$ = |dv="| + Source.FieldGetText("dv") + |"|
 
Подскажите пожалуйста можно ли в Search ставить условия <, > ???? Или только условия на равно, не равно ???
 
Извеняюсь за глупые вопросы.

в базе есть поле dat1 туда записывается дата полностью "19.01.2006 11:30:00"
Если пробежаться по базе циклом и поставить условие на равенство поля dat3 текущего документа и поля dat3 остальных документов, то все работает.

Если применять search

dat5=Source.FieldGetText( "dat3")
searchFormula$ = {Form = "av1" & dat3="} +dat5+{" }

Set collection_2 = db.Search(searchFormula$,Nothing,0)

возвращает ноль...
в дебагере смотрел значение dat5="19.01.2006 11:30:00"

Почему так ?
 
Дату заключи в квадратные скобки:
<!--QuoteBegin-Fugitive+18:01:2006, 13:20 -->
<span class="vbquote">(Fugitive @ 18:01:2006, 13:20 )</span><!--QuoteEBegin-->searchFormula$ = {Form = "av1" & dat3=[} +dat5+{] }
[snapback]29471" rel="nofollow" target="_blank[/snapback]​
[/quote]
 
Формат даты
[18.01.06 16:40:00]

Как Medevic написал
 
Еще один маленький вопросик.
Я понял что в Search нельзя написать, чтобы сравнивалось не все поле а лишь его часть left(city,4)="mosc"
Можно ли это как-то обойти ???
 
В Search надо писать формулы:
@Left(city; 4) = "mosc"
 
Для: Fugitive

Вопрос не ясен мне. В Search можно указать сравнение поля с любым доступным значением. Что значит "чтобы сравнивалось не все поле а лишь его часть"?
 
Спасибо большое. Мне помог Medevic. Именно это я хотел. !
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab