Воборка

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

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

    Fugitive Гость

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

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

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

    Fugitive Гость

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

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

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

    nor Гость

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

    Fugitive Гость

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

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

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

    Fugitive Гость

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

    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 Гость

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

    nor Гость

    Репутация:
    0
    Fugitive

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

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

    Fugitive Гость

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

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

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

    Fugitive Гость

    Репутация:
    0
    Извеняюсь за глупые вопросы.

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

    Репутация:
    0
    Регистрация:
    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 Гость

    Репутация:
    0
    Формат даты
    [18.01.06 16:40:00]

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

    Fugitive Гость

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

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

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

    nor Гость

    Репутация:
    0
    Для: Fugitive

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

    Fugitive Гость

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

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