Коллекция. Ftsearch

Тема в разделе "Lotus - Программирование", создана пользователем Gor, 26 мар 2008.

  1. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Всем доброго времени суток!!

    Ответ скорее всего на поверхности, но не могу понять в чём дело...

    в базе у меня есть доки, в этих доках в поле UID1 идентификаторы.
    Пытаюсь получить эти доки в коллекцию с помощью FTSearch

    Код (Text):
        o = uidoc.FieldGetText("UID1")
    o1 = uidoc.FieldGetText("curRole")

    Dim Collection As NotesDocumentCollection

    Set collection = db.FTSearch(o,0)

    Dim docc As NotesDocument
    Set docc = Collection.GetFirstDocument()

    While Not(docc Is Nothing)
    docc.stmode = "awaiting"
    docc.strole = o1

    Call docc.Save( True, True )
    Set docc = collection.GetNextDocument(docc)
    Wend
    Коллекция всё время выводится пустая... Почему?
    (документы с таким поисковым запросом QUERY точно существуют)
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Gor
    UID1 какого типа в документе?
     
  3. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    UID1 - простое поле TExt, Editable, только скрытое, тип Variant.

    В документах, которые пытаюсь найти этот же идентификатор находится в таком же поле только называется оно UID.
     
  4. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Кстати, почему бы не использовать NotesView.GetAllDocumentsByKey ?
     
  5. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    исправил на:
    Код (Text):
        Dim view As NotesView
    Set view = db.GetView("VRequest33")

    Set collection = view.GetAllDocumentsByKey(o, False)

    Dim docc As NotesDocument
    Set docc = Collection.GetFirstDocument()

    While Not(docc Is Nothing)
    docc.stmode = "awaiting"
    docc.strole = o1

    Call docc.Save( True, True )
    Set docc = collection.GetNextDocument(docc)
    Wend
    и заработало) спасибо)
    НО ПОЧЕМУУУ????????
    Я же только метод поменял... Они разве сильно отличаются....
     
  6. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Gor
    Ну так методы совершенно разные. У FTSearch есть нюансы навроде типа поля.

    Здесь лучше второй параметр исправить на True. Чтобы точное совпадение искал. На всякий случай...
     
  7. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Попробуйте вот так!.....
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Не, для таких ситуаций FTSearch в печЪ.
    Или search, или GetDocumentByKey.
     
  9. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    подерживаю.... ФТСёрч - кал
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    FTSearch юзают для юзерориентированного поиска (аод web тоже): вот юзер хочет найти, где в документах встречалось слово "жэпа".
    Тогда да, можно/нужно использовать FTSearch.
    А для логики, где надо точно взять документ по UNID'у использование FTSearch противопоказанно :)
     
  11. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    а кто для таких целей отменял Search ?
    @Contains ? @Member ? @Matches и т.д.
     
  12. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Morpheus
    А я и не прочь, точнее даже "за"!
    Я FTSearch вообще не юзал ни разу :)
     
  13. ukr

    ukr Гость

    Есть зашла речь об FTSearch, то на будущее.
    1) База в которой прозводится поиск FTSearch-eм должна быть проиндексированна
    2) Если искать по полю то необходимо записать так:


    Код (Text):
    o = uidoc.FieldGetText("UID1")

    Set collection = db.FTSearch({[UID1] = "} +Cstr(o(0))+{"},0)
     
  14. Sandr

    Sandr Гость

    Я одновремя намаился с ФТсерчем... проблема была с поиском по значениям, которые содержат спецсимволы... весело было

    ukr

    тока не Cstr(o(0)) а просто о, так как о получили из uidoc.fieldgettext
     
  15. Alexander (Criz)

    Alexander (Criz) Гость

    FTSearch форева!
    Попробуйте найти слово жэпа в мильоне доков при помоща простого Search! И идите обедать+дневной сон.
    А FTSearch выдаст за секунду-две!

    Хотя конечно разные области применения и у FTSearch, и у Search и у GetDocumentByKey.
     
  16. Sandr

    Sandr Гость

    Попробуйте найти FTSearch-ом строку
    ООО "Н@ша к*мпания!"

    и при это не извратнуться...
     
Загрузка...

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