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

  • Автор темы Автор темы Guest
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Здравтсвуйте! Подскажите,пожалуйста, начинающему програмиисту. Имеются документы с полями ФИО, пол, возраст. Необходимо разработать форму, которая могла бы искать ФИО, соответствующие полу и возрасту. Причем, искать должна, как при условии, что пол и возраст выбраны, так и при условии, что выбран только пол, или возраст. Создав отдельную колонку, в которую поместим значения полей пол+возраст, мы обеспечим возможность поиска по ключу "пол+возраст" и "пол" с помощью @DbLookup при наличие флага [PartialMatch]. А как тогда искать по возрасту, если первая отсортированная колонка начинается со значения "пол". Заранее спасибо!
 
хочется предложить использовать db.seacrh, но...
есть подозрение, что для пола существует ровно два варианта.
т.о. для поиска по возрасту сделайте два лукапа: "м"+возраст и "ж"+возраст
 
Это понятно, но вот в чем сложность. Я создал еще одну невидимую колонку, в которую поместил пол+возраст. Ключ для поиска фамилий выглядит так: @If( Pol="";a ;a+d), где Pol-название поля со значением пола. Но по такому ключу ищутся фамилии только по одному"полу" и по "пол+возраст". А как изменить ключ, чтобы была возможность искать еще и по одному возрасту без пола?
 
Дело в том, что мне по заданию надо все уместить в один лукап
 
Это понятно, но вот в чем сложность. Я создал еще одну невидимую колонку, в которую поместил пол+возраст. Ключ для поиска фамилий выглядит так: @If( Pol="";a ;a+d), где Pol-название поля со значением пола. Но по такому ключу ищутся фамилии только по одному"полу" и по "пол+возраст". А как изменить ключ, чтобы была возможность искать еще и по одному возрасту без пола?
Я может криво выразился, попробую еще раз: вы умеете делать запрос по возрасту и полу... Для того, чтобы сделать запрос только по возрасту достаточно сделать два таких запроса - отдельно по каждому полу.
На пальцах: вы умеете выбрать ФИО по запросу "мужчины, 37лет". также вы умеете выбрать ФИО для "женщины, 17лет".
Для того, чтобы обработать запрос "пофиг кто, 99 лет" нужно объединить рез-ты 2-х запросов: ( м , 99 ) и ( ж , 99 )
Результаты объединяются при помощи двоеточия.
male99:= @dblookup( ... ; ... ; ... ; "male"+@Text(99) ; ... )
female99:= @dblookup( ... ; ... ; ... ; "female"+@Text(99) ; ... )
@return( female99:male99)
Если хочется обойтись одним лукапом - нужно переделать формулу первой колонки вида на что-то вроде (gender+age):age. При этом один документ будет попадать в вид дважды. Но я бы рекомендовал использовать именно двойной запрос.
 
Дело в том, что мне по заданию надо все уместить в один лукап
С помощью одного лукапа тоже можно, если подготовить представление.
А именно в колонке сделать значение, например: (пол+возраст) : ("$пусто$"+возраст) : (пол+"$пусто$").
Тогда если не задан пол или возраст мы ищем по ключу «пол+"$пусто$"» или «"$пусто$"+возраст».
 
Medevic
Вообще-то turumbay уже предложил данный вариант :)
Кроме того, зачем эти "пусто"? В даном случае, можно просто в одну колонку запихать ПОЛ : ВОЗРАСТ : (ПОЛ+ВОЗРАСТ).
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab