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

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

Guest

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

turumbay

хочется предложить использовать db.seacrh, но...
есть подозрение, что для пола существует ровно два варианта.
т.о. для поиска по возрасту сделайте два лукапа: "м"+возраст и "ж"+возраст
 
G

Guest

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

Guest

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

turumbay

Это понятно, но вот в чем сложность. Я создал еще одну невидимую колонку, в которую поместил пол+возраст. Ключ для поиска фамилий выглядит так: @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

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Дело в том, что мне по заданию надо все уместить в один лукап
С помощью одного лукапа тоже можно, если подготовить представление.
А именно в колонке сделать значение, например: (пол+возраст) : ("$пусто$"+возраст) : (пол+"$пусто$").
Тогда если не задан пол или возраст мы ищем по ключу «пол+"$пусто$"» или «"$пусто$"+возраст».
 
A

Akupaka

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!