Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Вниз

Сортировка по вычислимому полю в TQuery 


clarin   (2002-03-19 14:24) [0]

Плииииз....помогите советом....Как можно отсортировать таблицу по вычислимому полю в TQuery?



Johnmen   (2002-03-19 14:27) [1]

Ты бы хоть для приличия написал какая база !
Если IB, то используй FIBPlus...

А вообще - НИКАК !!!



fishka   (2002-03-19 14:43) [2]

В конце Query можно написать так:
order by 2//
где 2 - номер вычисляемого поля в запросе, например:
select p1, sum(p2)
from ....
order by 2



Fareader   (2002-03-19 14:48) [3]

>Johnmen
Не стоит быть таким категоричным, fishka дело говорит



Johnmen   (2002-03-19 14:48) [4]

>fishka : это если вычисляетя в запросе да и вычисления простые,
а если в приложении вычисляемое поле у НД - см.выше...



clarin   (2002-03-19 14:49) [5]

Johnmen: база Oracle
fishka: в SQL-запросе я сделать не могу, т.к. на этапе открытия таблицы выполняется событие OnCalcFields , в котором и обсчиьываеься значение текщей записи для данного поля...



clarin   (2002-03-19 14:49) [6]

Johnmen: база Oracle
fishka: в SQL-запросе я сделать не могу, т.к. на этапе открытия таблицы выполняется событие OnCalcFields , в котором и обсчитывается значение текщей записи для данного поля...



Johnmen   (2002-03-19 14:54) [7]

Тогда повторюсь - НИКАК !



clarin   (2002-03-19 15:02) [8]

мда...беда...



Alexandr   (2002-03-19 15:04) [9]

а чего беда-то?
У тебя же Oracle!
Вычисляй на сервере, а не на клиенте.
И сортируй там



clarin   (2002-03-19 15:21) [10]

Alexandr: у меня в query1 поля: key,naim,...
в query2: key,cost,...
так вот мне нужно в DBGrid-е показать Query1 с полями naim,cost
Это упрощенная задача,но воббще-то Query1 еще связано с Query3,Query4 и тд по коду key.
на обработку Query1.OnCalcFields вывожу по коду key данные из Query2 по тому же коду значение поля naim...
И поэтому я не совсем поняла: что значит вычислять на сервере....



Val   (2002-03-19 15:41) [11]

clarin (19.03.02 15:21)
И поэтому я не совсем поняла: что значит вычислять на сервере....
Создайте на сервере представление, раз уж часто работаете с данными в таком виде.



Lusha   (2002-03-19 15:41) [12]

Господа имеют Вам сказать, сударыня, что возможно следующее написание запроса к БД
SELECT d.naim, d.cost, e.naim as naim1
FROM Table1 d, Table2 e
WHERE d.key = e.key

в этом случае Вы получите вычисляемое поле, вычисленное непосредственно на серевере...



clarin   (2002-03-19 16:22) [13]

Вы правы,что если хочешь нормальный ответ-правильно задай вопрос...чего сделать не смогла..не правильно сформулировала вопрос..
Так вот Query1 в вычислимом поле naim собирает по коду key_ из всех Query2 по полю naim2,Query3 по полю naim3,Query4 по полю naim4 и тд naim:=naim1+naim2+naim3+...-полное наименование, а если naim1,naim2,naim3 и тд пустые-то в naim:="удален "
и я все это проделала в Query1.OnCalcFields



Lusha   (2002-03-19 16:34) [14]

Честно говоря я мало что понял кроме того, что вычисляемое поле есть конкатенация некоторых полей из выборки, Она легко реализуется в одном запросе, как впрочем и условие проверки на NULL некоторых полей...



alexandervasjuk   (2002-03-19 16:36) [15]

Клэрин

почему все это нельзя организовать в базе как процедуру и обращаться к ней с order by?



clarin   (2002-03-19 16:49) [16]

спасибо всем...навели на мысль.....хочу опробовать :)



Sergey13   (2002-03-20 09:20) [17]

2alexandervasjuk © (19.03.02 16:36)
Зачем городить огород с процедурой если это решается простым запросом. Lusha © абсолютно прав. Запрос может выглядеть примерно так:

SELECT a.key,a.name||nvl(b.name,"")||nvl(c.name,"") all_name
FROM table1 a, table2 b, table3 c
WHERE a.key=b.key(+) AND a.key=c.key(+)
ORDER BY 2

(+) можно не ставить если значения в table2 и table3 гарантировано есть. NVL тоде можно не использовать если значения гарантировано не NULL. Количество таблиц можно отредактировать по необходимости.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.026 c
1-32763           michael_B             2002-03-30 20:21  2002.04.11  
Как заблокировать во время выполнения моей программы


3-32663           SecondGray            2002-03-20 13:15  2002.04.11  
Тип ftFloat в таблицах dBase и FoxPro


1-32792           Demon Ltd             2002-04-01 00:44  2002.04.11  
Работа с меню


1-32785           snoup                 2002-03-29 23:21  2002.04.11  
Помогите пожалуйста пишу так надо что бы оно ещё автозапукалось!


14-32946          novomod               2002-02-28 17:18  2002.04.11  
О главном.Программист - болезнь,работа,увлечение?