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

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

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

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

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

Что это ? :)
Lotus team
10.12.2004
3 346
2
#8
Дело в том, что мне по заданию надо все уместить в один лукап
С помощью одного лукапа тоже можно, если подготовить представление.
А именно в колонке сделать значение, например: (пол+возраст) : ("$пусто$"+возраст) : (пол+"$пусто$").
Тогда если не задан пол или возраст мы ищем по ключу «пол+"$пусто$"» или «"$пусто$"+возраст».
 

Akupaka

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