Воборка

Тема в разделе "Lotus - Программирование", создана пользователем Fugitive, 13 янв 2006.

Статус темы:
Закрыта.
  1. Fugitive

    Fugitive Гость

    Здравствуйте ! Я только начал заниматься Lotus и у меня возник вопрос.
    Я в форме документа в свойстве querysave описал с помощью цикла сравнение на не совпадение поля в с полем из других документов. База примерно 1000 доакументов. Все вроде работает. Но цикл он проходит за 2-3 секунды.....А записей всего лишь 1000, а если будет 100 000 ?????? Как я понял можно написать агент который будет это все гнать на сервере. Но что ради такой элементарной операцией нужно теперь замарачиваться на агент ??? Может быть есть более простой и быстрый способ получить выборку документов с критерием отбора ??????
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Fugitive, как выглядит цикл ? Может есть способ заменить его @Dblookup или GetDocumentByKey ? Будет гораздо быстрей.
    У меня база ~5500 записей. Поиск происходит при выходе из поля. Сделан через GetDocumentByKey. Работает меньше секунды (почти мгновенно). Думаю, что если сделать через Evaluate({@DbLokkup(...)}) будет вообще мгновенно.
     
  3. Fugitive

    Fugitive Гость

    Спасибо. Не знал про такие методы. Прочитал про getdocumentbykey, можно ли в массиве, который передается как параметр написать логическое выражение ????
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Пиши. Но оно пойдет как строка для поиска.
    Если нужно искать по формуле, то попробуй notesDatabase.Search. Но, скорее всего, будет медленнее.
     
  5. nor

    nor Гость

    Для реализации быстрого поиска по базе данных необходимо создать и затем периодически обновлять индекс этой базы данных, а для получения выборки документов согласно определенным критериям - пользоваться методом NotesDatabase.FTSearch
     
  6. Fugitive

    Fugitive Гость

    Возник вопрос: можно ли в методах Search или FTsearch использовать условия что-то типа этого (...) or (...) ?
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В notesDatabase.Search можно
     
  8. Fugitive

    Fugitive Гость

    Извините за глупый вопрос. Не пойму в чем дело.
    Если делать так:

    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)

    упорно возвращает ноль документов.
    ???
     
  9. Fugitive

    Fugitive Гость

    чуть чуть ошибся не ноль возвращает а 347. Короче не правильно !
     
  10. nor

    nor Гость

    Fugitive

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

    Код (Text):
    searchFormula$ = |dv="| + Source.FieldGetText("dv") + |"|
     
  11. Fugitive

    Fugitive Гость

    Подскажите пожалуйста можно ли в Search ставить условия <, > ???? Или только условия на равно, не равно ???
     
  12. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Можно.
     
  13. Fugitive

    Fugitive Гость

    Извеняюсь за глупые вопросы.

    в базе есть поле 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"

    Почему так ?
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Дату заключи в квадратные скобки:
    <!--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]
     
  15. Domino6

    Domino6 Гость

    Формат даты
    [18.01.06 16:40:00]

    Как Medevic написал
     
  16. Fugitive

    Fugitive Гость

    Еще один маленький вопросик.
    Я понял что в Search нельзя написать, чтобы сравнивалось не все поле а лишь его часть left(city,4)="mosc"
    Можно ли это как-то обойти ???
     
  17. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В Search надо писать формулы:
    @Left(city; 4) = "mosc"
     
  18. nor

    nor Гость

    Для: Fugitive

    Вопрос не ясен мне. В Search можно указать сравнение поля с любым доступным значением. Что значит "чтобы сравнивалось не все поле а лишь его часть"?
     
  19. Fugitive

    Fugitive Гость

    Спасибо большое. Мне помог Medevic. Именно это я хотел. !
     
Статус темы:
Закрыта.

Поделиться этой страницей