Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сортировать...? [D5, MSSQL]


UnMi ©   (2004-02-24 16:40:00) 

Здравствуйте всем!
Вот столкнулся с проблемой, при подстановке в поля DataSeta своих значений (OnGetText) не получается их потом по этим
значениям отсортировать. То есть сортироваться то сортируется, но не правильно - по первоначальным значениям. Может кто сталкивался?


Sandman25+1   (2004-02-25 16:48:00) [1]

[11] UnMi   (25.02.04 16:37)

Да, ИМХО функция была наилучшим решением помимо полной переделки.


UnMi   (2004-02-25 16:37:00) [2]

>Sandman25+1   (25.02.04 10:55) [10]
Да, все это понятно. Спасибо огромное! НО!
У меня (вот ведь извращенца воспитали) типа так:
CREATE TABLE s(id INT, name CHAR(10))
CREATE TABLE f(id INT, name CHAR(10))

и данные: s([1,'1,13,15,35'],...)
         f([1,'q'],[13,w],...)
причем f - тоже составная (из 2 состоит)
В итоге!
    получаем гибрид s и f - temptable(1,'q,w....').
Вот так...

Сделал таки. И тоже извращенно.
Написал функцию на сервер, которая из представления отбирает то что мне надо, и клепает строку со значениями. Вот гемор!


Sandman25+1   (2004-02-25 10:55:00) [3]

[9] UnMi   (25.02.04 09:23)

То есть у Вас есть что-то типа
CREATE TABLE t(id INT, name CHAR(10), keys CHAR(100)), и данные типа
например, t(1, 'первый','1,14,125,245')?

А следует сделать вот так:
CREATE TABLE t(id INT, name CHAR(10));
CREATE TABLE keys(id INT, key INT)
И данные:
t(1, 'Первый'),
keys(1,1),
keys(1,14),
keys(1,125),
keys(1,245).
Тогда и посик будет быстрее работать, и с сортировкой проблем не будет.


UnMi   (2004-02-25 09:23:00) [4]

>Sandman25+1   (24.02.04 17:30) [7]
Там есть ссылки на номера. Но дело в том, что номеров несколько!
И таблица должным образом нормализована. В том то и дело! Есть строка, куда записываются несколько номеров - ссылок на записи в другой таблице. Записываются по порядку. И сортируются данные по этому столбцу не на основании подставляемых значений, а на основе реальных значений.

>Vlad ©   (24.02.04 17:47) [8]
Я конечно попробую, но если честно, то с ADO TClientDataSet не рекомендуют.


Vlad   (2004-02-24 17:47:00) [5]


> UnMi   (24.02.04 17:28) [6]

возможно TClientDataSet тебе поможет


Sandman25+1   (2004-02-24 17:30:00) [6]

[6] UnMi   (24.02.04 17:28)

А, понятно. Вместо того, чтобы добавить таблицу ссылок на номера, все засунули в одно поле? Про нормализацию слышали?


UnMi   (2004-02-24 17:28:00) [7]

[5] Sandman25+1  

Там в принципе не получится case использовать.
Есть строка, которая содержит номера (номеров может быть несколько).Так вот потом, в программе, номера заменяются определенными значениями. И надо как раз сортировать по ним.


Sandman25+1   (2004-02-24 17:22:00) [8]

[4] UnMi   (24.02.04 17:10)

Какого вида подстановка нужна? В MSSQL довольно мощный CASE


UnMi   (2004-02-24 17:10:00) [9]

>Sandman25+1
Не, case точно не подходит, там ведь просто подстановка выражений на основе значений.

>Anatoly Podgoretsky  :
А как быть?

Мне еще посоветовали воспользоваться какой нить табличкой (на основе TTable) и создать индекс по новому полю. И по нему сортировать. Может и получится. Попробую - напишу.


Sandman25+1   (2004-02-24 16:50:00) [10]

Можно попробовать добавить CASE в SELECT и по этому новому полю сортировать.


Johnmen   (2004-02-24 16:48:00) [11]

А как вообще можно сортировать по несуществующим значениям ???
Как ты по ним сортируешь ???


Anatoly Podgoretsky   (2004-02-24 16:48:00) [12]

А так и должно быть, нельзя сортироваться по несуществующему.


Наверх

Титульная страница Поиск, карта сайта Написать письмо