Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Хитрая сортировка и не работающий OrderBy  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Перед сдачей проекта любимому клиенту захотелось прикрутить сортировки в форме. С простыми, типа по нескольким поля, разобрался быстро, но клиент захотел сделать следующее:
Есть 2 поля Продажи и Прибыльность.
Надо разделить таблицу на 2 части - Продажи >= Некий_Порог и Продажи < Некий_Порог
И каждую из частей отсортировать по Прибыльности
Руки, привыкшие к SQL, сделали запрос:
SELECT Product, TotalExtPrice, GPP
FROM History
ORDER BY IIf(TotalExtPrice>Некий_Порог,0,1), LastGPP;

Одно но - менять источний данных формы не хочется.
Попытка запихнуть IIf(TotalExtPrice>Некий_Порог,0,1), LastGPP в OrderBy окончилась неудачей, ибо Аксесс воспринял первое выражение как поле, то есть в строке OrderBy стоит [IIf(TotalExtPrice>Некий_Порог,0,1)], LastGPP и при загрузке формы Аксесс предлагает набить значение для этого поля.
Как забороть зверя и приделать сортировку с условием?
Приделывать сурогатные поля и прочие подобные телодвижения суть от лукавого и не приветствуются.
Хочется чего-нить посимпатишнее.
Заранее благодарен
31 янв 06, 13:19    [2304950]     Ответить | Цитировать Сообщить модератору
 Re: Хитрая сортировка и не работающий OrderBy  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2505
SELECT IIf(TotalExtPrice>Некий_Порог,0,1), Product, TotalExtPrice, GPP
FROM History
ORDER BY IIf(TotalExtPrice>Некий_Порог,0,1), LastGPP;
31 янв 06, 13:37    [2305064]     Ответить | Цитировать Сообщить модератору
 Re: Хитрая сортировка и не работающий OrderBy  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Ненене
Мне не нужен запрос, он у меня работает и так
Мне нужна строка, которую я могу запихнуть в OrderBy и которая выполняет такую же сортировку, как и в запросе.
31 янв 06, 13:59    [2305208]     Ответить | Цитировать Сообщить модератору
 Re: Хитрая сортировка и не работающий OrderBy  [new]
ып
Guest
Имхо банальная ошибка в имени поля.

Можно сделать также с Union
Select ... From Tabl Where condition1
union
select .... from tabl where condition2
31 янв 06, 14:04    [2305240]     Ответить | Цитировать Сообщить модератору
 Re: Хитрая сортировка и не работающий OrderBy  [new]
ып
Guest
ып
Имхо банальная ошибка в имени поля.

Можно сделать также с Union
Select ... From Tabl Where condition1
union
select .... from tabl where condition2


Имелось в виду
Select Field1,.... 0 As SortingField From Tabl Where condition1
union
Select Field1,.... 1 As SortingField From Tabl Where condition1
Order By SortingField, .....
- рекордсет необновляемый.

Но, повторюсь, если Акс спрашивает непрудесмотренный автором параметр, значит, ошибка в имени поля.
31 янв 06, 14:13    [2305279]     Ответить | Цитировать Сообщить модератору
 Re: Хитрая сортировка и не работающий OrderBy  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Видно не умею я вопросы задавать.
Давайте ещё раз.

Клиент хочет выше описанную сортировку. Я могу это сделать выполнив запрос, который я привёл.
Но!
Я не хочу менять источник данных формы. Поэтому я скопировал то, что находится в секции ORDER BY запроса в OrderBy формы. При этом отгрёб сообщение о внесении значения, потому что Аксесс воспринял выражение iif(...) как имя поля.

Можно ли в заставить Аксесс сортировать так как мне нужно, подставив в OrderBy формы условие? Если да, то какое?
31 янв 06, 14:49    [2305481]     Ответить | Цитировать Сообщить модератору
 Re: Хитрая сортировка и не работающий OrderBy  [new]
sdfg
Guest
Есть мнение, что указать сортировку по вычисляемому выражению в свойстве формы OrderBy не получится. Такие вещи делаются в RecordSource.
31 янв 06, 16:57    [2306137]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить