Аналог Like

Тема в разделе "Lotus - Программирование", создана пользователем Didokz, 20 авг 2010.

  1. Didokz

    Didokz Гость

    всем привет, подскажите, как мне искать в документе необходимые слова в поле
    Код (Delphi):
    search = "Form="KR" & Num="1" & Corr="БАНК"
    colldoc = db.Search(search, null, 0);
    к примеру поле "кореспондент"="АО "КРЕДИТ БАНК" или "кореспондент"="АО "АЛЬЯНС БАНК"
    в этом случае эти документы должны быть найдены по этому поиску, есть ли функция типа как LIKE ?
     
  2. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
  3. Didokz

    Didokz Гость

    пробовал так:
    Код (C++):
    search = "Form="KR" & Num="1" & @Like(Corr)="БАНК"
    пишет
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    всегда существует оценка эффективности...
    если набор большой - возможно DbSearch
    а ежели - нет - то выборку можно "втянуть" и искать в ней
    притом не все варианты возможны для поиска (т.е. всего-лишь надо <начало фразы>* или *<конецфразы>)
    можно решить и индексом (сгенерив мультивалюйное поля - для поиска, с вариантами)

    Добавлено:
    а просто написать в отборе тестовой вьюшеке - не судьба? :)
    или открыть хэлп по формуле....
     
  5. Didokz

    Didokz Гость

    так геморно, мне надо в БД искать документы по вх.номерам и по кореспондентам
    я не хочу каждый документ открывать, "втянуть" и искать, пусть сервер это делает
    db.Search(...
    пишу на C# импользуя СОМ библиотеки, про @Uppercase узнал уже )))
    search = "Form='KR' & Num='" + InNumber.Text + "' & @Uppercase(Corr)='" + Korespondent.Text.ToUpper() + "'";
    я сам в Лотусе не пишу и дизайнера(хелп по нему в т.ч) у меня нету :)
     
  6. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Подойдет @Contains.
     
  7. Didokz

    Didokz Гость

    ещё одна проблема:
    colldoc = db.Search(search, null, 0);
    doc = colldoc.GetFirstDocument();
    поле RegDate в документе отображается как дд.мм.гггг
    я проверял, почему не срабатывает думал:
    MessageBox.Show(doc.GetFirstItem("RegDate").Text);
    возвращает дд.мм.гггг чч.мм.сс
    как правило юзер время не помнить и не вводят, как искать такую дату
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Понял только с третьего прочтения.
    @Date(RegDate) вернёт только дату.
     
  9. Didokz

    Didokz Гость

    а в каком формате возварщает ? дд.мм.гггг или мм.дд.гггг ?
    че то у меня при поиске с датой не срабатывает поиск, без даты работает
    search = "Form="KR" & Num="1" & @Date(RegDate)="23.12.2009" & @Contains(@LowerCase(Corr);'" + Korespondent.Text.ToLower() + "')";
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  11. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В формате даты.
    Дату надо брать в квадратные скобки.
    @Date(RegDate)=[23.12.2009]

    Добавлено: Ну а более правильно:
    @Date(RegDate)=@Date(2009; 12; 23)
     
  12. Didokz

    Didokz Гость

    г-н lmike, вы просто мимо идите,сюда не заглядывайте
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  14. Didokz

    Didokz Гость

    с кв.скобками ошибка в формуле говорит, я же использую в db.search()
    a
    Код (Delphi):
    search = "Form="KR" & Num="1" & @Date(RegDate)="2009.12.23" & @Contains(@LowerCase(Corr);'" + Korespondent.Text.ToLower() + "')";
    не возвращает ничего :)
     
  15. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Если берешь в квадратные скобки, то вводить дату надо в региональном формате. т.е. [23.12.2009].
    Поэтому лучше использовать @Date(2009; 12; 23). Параметры - год, месяц, число.
     
  16. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Didokz
    Что-то мне кажется с кавычками Вы намудрили. В ЛС запрос скорее всего выглядел бы так:
    Код (LotusScript):
    search = {Form="KR" & Num="1" & @Date(RegDate)=@Date(2009; 12; 23) & @Contains(@LowerCase(Corr);"} + Korespondent.Text.ToLower() + {")}
    с учётом того, что в ЛС {} — ещё один вид кавычек.
    Может так получится:
    Код (Delphi):
    search = "Form=\"KR\" & Num=\"1\" & @Date(RegDate)=@Date(2009; 12; 23) & @Contains(@LowerCase(Corr);\"} + Korespondent.Text.ToLower() + "\")";
     
  17. Didokz

    Didokz Гость

    дело в том что дата у меня переменный,берется с текстбокса InDate.Text
    но я могу в этом в текстбоксе настроит дату как хочу, могу гггг.мм.дд или дд.мм.гггг, соответственно, при поиске док-в по дате:
    если я настрою дд.мм.гггг
    Код (Delphi):
    search = "@Date(RegDate)=[" + InDate.Text + "]...;
    а если формат
    гггг.мм.дд
    то
    Код (Delphi):
     search = "@Date(RegDate)=@Date(" + InDate.Text + ")...;
    далее
    colldoc = db.Search(search, null, 0); и т.д.
    я вас правильно понял ?

    Добавлено:
    с кавычками проблем нет, так как если убрать из опций поиска дату,работает
    Код (Delphi):
    search = "Form='KR' & Num='" + InNumber.Text +"' & @Contains(@LowerCase(Corr);'" + Korespondent.Text.ToLower() + "')";
     
  18. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Лучше давать дату по частям. Чтобы не было проблем с форматом. Типа такого:
    Код (Text):
    search = "@Date(RegDate)=@Date(" + Year(InDate) + "; " + Month(InDate) + "; " + Day(InDate) + ")...;
     
  19. Didokz

    Didokz Гость

    вот посмотрите
    [​IMG]
    пишет Notes error: Formula Error (@Date(RegDate)=@Date(2009.12.23))

    Добавлено: [​IMG]
     
  20. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    @Date(2009.12.23), @Year(2009.12.23), @Month(2009.12.23), @Day(2009.12.23) — не хватает кавычек/скобок.
     
Загрузка...
Похожие Темы - Аналог Like
  1. wellsun
    Ответов:
    0
    Просмотров:
    128
  2. oshmianski
    Ответов:
    7
    Просмотров:
    744
  3. DNT
    Ответов:
    13
    Просмотров:
    1.302
  4. ESWANT
    Ответов:
    0
    Просмотров:
    1.323
  5. Dragon108
    Ответов:
    6
    Просмотров:
    2.451

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