Отбор с помощью @dblookup по ключам из двух колонок

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

Статус темы:
Закрыта.
  1. Гость

    Здравтсвуйте! Подскажите,пожалуйста, начинающему програмиисту. Имеются документы с полями ФИО, пол, возраст. Необходимо разработать форму, которая могла бы искать ФИО, соответствующие полу и возрасту. Причем, искать должна, как при условии, что пол и возраст выбраны, так и при условии, что выбран только пол, или возраст. Создав отдельную колонку, в которую поместим значения полей пол+возраст, мы обеспечим возможность поиска по ключу "пол+возраст" и "пол" с помощью @DbLookup при наличие флага [PartialMatch]. А как тогда искать по возрасту, если первая отсортированная колонка начинается со значения "пол". Заранее спасибо!
     
  2. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    хочется предложить использовать db.seacrh, но...
    есть подозрение, что для пола существует ровно два варианта.
    т.о. для поиска по возрасту сделайте два лукапа: "м"+возраст и "ж"+возраст
     
  3. Гость

    Это понятно, но вот в чем сложность. Я создал еще одну невидимую колонку, в которую поместил пол+возраст. Ключ для поиска фамилий выглядит так: @If( Pol="";a ;a+d), где Pol-название поля со значением пола. Но по такому ключу ищутся фамилии только по одному"полу" и по "пол+возраст". А как изменить ключ, чтобы была возможность искать еще и по одному возрасту без пола?
     
  4. Гость

    Дело в том, что мне по заданию надо все уместить в один лукап
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Я может криво выразился, попробую еще раз: вы умеете делать запрос по возрасту и полу... Для того, чтобы сделать запрос только по возрасту достаточно сделать два таких запроса - отдельно по каждому полу.
    На пальцах: вы умеете выбрать ФИО по запросу "мужчины, 37лет". также вы умеете выбрать ФИО для "женщины, 17лет".
    Для того, чтобы обработать запрос "пофиг кто, 99 лет" нужно объединить рез-ты 2-х запросов: ( м , 99 ) и ( ж , 99 )
    Результаты объединяются при помощи двоеточия.
    male99:= @dblookup( ... ; ... ; ... ; "male"+@Text(99) ; ... )
    female99:= @dblookup( ... ; ... ; ... ; "female"+@Text(99) ; ... )
    @return( female99:male99)
    Если хочется обойтись одним лукапом - нужно переделать формулу первой колонки вида на что-то вроде (gender+age):age. При этом один документ будет попадать в вид дважды. Но я бы рекомендовал использовать именно двойной запрос.
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    эту "мелочь" стоило упомянуть в первом посте.
    научитесь задавать вопросы.
     
  7. Гость

    Спасибо! Идею я понял
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    С помощью одного лукапа тоже можно, если подготовить представление.
    А именно в колонке сделать значение, например: (пол+возраст) : ("$пусто$"+возраст) : (пол+"$пусто$").
    Тогда если не задан пол или возраст мы ищем по ключу «пол+"$пусто$"» или «"$пусто$"+возраст».
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Medevic
    Вообще-то turumbay уже предложил данный вариант :)
    Кроме того, зачем эти "пусто"? В даном случае, можно просто в одну колонку запихать ПОЛ : ВОЗРАСТ : (ПОЛ+ВОЗРАСТ).
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Akupaka, бегло читал, не заметил. :)
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    та я так же написал ответ, а потом случайно заметил :)
     
Загрузка...
Статус темы:
Закрыта.

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