Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.26;
Скачать: CL | DM;

Вниз

Сортировка по вычислимому полю в наборе данных TTable   Найти похожие ветки 

 
dj-amigo ©   (2003-11-28 19:48) [0]

У меня такая проблема:
Я хочу отсортировать набор TTable по вычислимому полю, но не знаю как это сделать! Я использую таблицы формата Paradox!
Обычно сортировку я проводил, создав индекс для набора полей, по которым и надо производить сортировку, а по вычислимому полю, по сути, индекс задать невозможно, так как такое поле отсутствует в физической таблице и вычисляется на этапе выполнения...
Помогите плиз!


 
ksan   (2003-11-28 20:05) [1]

Извините пожалуйста, а где тогда находится это поле? Мне тоже интересно. Если оно существует в запросе то где-то оно должно быть? Правильно?


 
dj-amigo ©   (2003-11-28 20:08) [2]

Ну я же повторяю, что это поле вычислимое и его значение расчитывается на этапе выполнения из значений в других полях...


 
Reindeer Moss Eater ©   (2003-11-28 20:13) [3]

Вот и сортируй по этим полям.


 
ksan   (2003-11-28 20:19) [4]


> dj-amigo © (28.11.03 20:08) [2]

А куда оно потом девается? Если остается в наборе, то оно должно быть полноценным полем по которому можно делать сортировку. Хотя может быть это сильно отличается от SQL запросов.


 
dj-amigo ©   (2003-11-28 20:24) [5]

ksan, фишка в этом и заключается, paradox-это локальные базы


 
ksan   (2003-11-28 20:29) [6]


> dj-amigo © (28.11.03 20:24) [5]

Тогда я ПАС. Может быть у компонента TTable должны быть методы сортировки?


 
dj-amigo ©   (2003-11-28 20:39) [7]

ksan, нет у компонента TTable нет методов сортировки, механизм сортировки проходит через физический индекс, а как иначе я не знаю!


 
ksan   (2003-11-28 20:56) [8]

Если упорядочивание возможно только по индексированному полю, может быть следует создать таблицу куда поместить все результаты, потом индексироваь и сортировать?


 
dj-amigo ©   (2003-11-28 21:13) [9]

Ну это слишком расточительно, создавать целую новую таблицу ради сортировки.. Мне нужен более быстрый способ для интерактивного пользования...


 
Johnmen ©   (2003-11-29 00:10) [10]

TQuery - это азы...:)


 
dj-amigo ©   (2003-12-01 18:12) [11]

TQuery - это компонент, используемый преимущественно для работы с удаленными базами, а у меня база ЛОКАЛЬНАЯ! И мне даже SQL-запросы сочинять не надо. Мне надо только реализовать сортировку некоего набора данных для удобства юзания(представить в отсортированном виде).


 
BlackKing   (2003-12-01 18:15) [12]

Chto mozhet bit" udobneje TQuery? i ne vazhno dlja udaljonnogo dostupa ili lokal"no. K tomu zhe na skorosti viigrajesh ofigenno.
Provedi nekotorije testi, sam pojmjosh.


 
dj-amigo ©   (2003-12-01 18:19) [13]

BlackKing, я не отрицаю того, что TQuery это более эффективное средство, но проект мой построен полностью на использовании компоненнтов TTable, а если его реинженирить то придется все полностью переделать...


 
Vemer ©   (2003-12-01 18:23) [14]

Что мешает поменять один Table на Query с таким же именем? Я когда начинал пинать Дельфи сто раз так делал. Главное, что-бы Query имел такое-же имя и поля.


 
BlackKing   (2003-12-01 18:31) [15]

i ja kak-to perepisival projekt ~80 TTable zamenjal na TQuery. i ne pozhalel. K tomu zhe skorost" uvelichilas" procentov na 70.
a so vremenem vaashe vse standartnije komponenti zamenil na svoji i opjat" perekonvertil progi.

Hotja, jesli net vremeni, to nado podumat", braca ili net za eto delo. Nu a jesli zhelanija, to ...izvinjaj.


 
dj-amigo ©   (2003-12-01 18:31) [16]

Vemer, все равно возни много! И потом создать всё на TTable это моя сверхзадача...


 
Vick ©   (2003-12-01 18:35) [17]

>dj-amigo
Не пробовал Мидас использовать???
Все содержимое TTable грузишь через провайдера в КлиенДатаСет, а потом деалешь со всеми полями что хочешь: сортируешь, группируешь, песни поешь....


 
dj-amigo ©   (2003-12-01 18:48) [18]

Vick, у меня не распределенное приложение, а примитивная локальная СУБД, предназначенная на юзание на одной рабочей станции, поэтому подобные системы навертывать не имеет смысла, а потом моя прога оперирует видеоданными, которые по сетке гонять нет ни возможности, ни смысла...


 
Vick ©   (2003-12-01 18:50) [19]

>dj-amigo ©
Так тут дело совсем и не в сетке, тебе нужно получить набор данных, который можно будет сортировать по всем полям, а CDS у тебя просто как буфер будет.


 
dj-amigo ©   (2003-12-01 19:02) [20]

Vick, но заметь, чтобы использовать МИДАС нужны и сервер приложений, и SQL-сервер, что значительно усложнит проект, а мне нужно решение в рамках того, что я уже разработал!


 
Vick ©   (2003-12-01 19:04) [21]

>dj-amigo ©
ЗАЧЕЕЕЕММ!!!!
Ставишь на форму TProvider, TClientDataSet - дальше радуешься жизни!!! Ух молодежь!!!


 
Anatoly Podgoretsky ©   (2003-12-01 19:05) [22]

Какое у тебя расчетное выражение?


 
dj-amigo ©   (2003-12-01 19:08) [23]

Anatoly Podgoretsky, поясните пожалуйста, что именно вы имеете ввиду?


 
mike-d ©   (2003-12-01 19:18) [24]


> Я хочу отсортировать набор TTable по вычислимому полю,
> но не знаю как это сделать

TTable по вычисляемым полям не сортирует. Никак не сделаешь...
А TQuery и TClientDataSet тебе не подходят...
Остается только превратить эти вычисляемые поля в физические, в OnPost записывать в них данные по нужному тебе "расчетному выражению" и сделать (соответственно) индекс по этому полю (полям).


 
Anatoly Podgoretsky ©   (2003-12-01 19:20) [25]

Цитата "и вычисляется на этапе выполнения..."


 
Vlad ©   (2003-12-01 19:21) [26]

>dj-amigo © (01.12.03 19:08) [23]

Расчетное выражение - выражение для расчета значения в твоем вычисляемом поле.
И все-таки ты не привел ни одного весомого аргумента, почему бы тебе не использовать TQuery.
А вот это утверждение
>TQuery - это компонент, используемый преимущественно для работы с удаленными базами
абсолютно неверно.


 
Anatoly Podgoretsky ©   (2003-12-01 19:24) [27]

Vlad © (01.12.03 19:21) [26]
Поддерживаю, и сделаю правильную формулировку TQuery - это компонент, используемый для осуществления реляционных операцией над таблицами базы данных, через SQL


 
dj-amigo ©   (2003-12-01 19:33) [28]

mike-d,Anatoly Podgoretsky, значение поля подчиненной таблицы у меня формируется из значений полей главной таблицы, а подчинённая таблица у меня должна быть отсортирована по этому самому вычислимому полю! Причем подчиненная таблца фильтруется по критерию наличия записи в отфильтрованной главной таблице, но при вем при этом наборы данных не связаны в отношении гланый-подчиненный.


 
Anatoly Podgoretsky ©   (2003-12-01 19:51) [29]

Стоп теперь подчиненая появилась, про подчиненую забудь, ее сортировка определяется только полем связи и ни чем иным.
Но у тебя не подчиненая, а полностью автономная таблица, отфильтрованая и отсортированая по каким то критерием.

Но пока ты будешь умалчивать про Расчетное выражение трудно о чем либо говорить.


 
dj-amigo ©   (2003-12-01 20:06) [30]

Хм, расчетное выражение! Поле у меня, во-первых, текстовое и слагается путем конкатенации других трех полей главной таблицы.
Во-вторых, по этому полю подчиненная таблица должна ещё и группироваться по критерию отношения к записям главной таблицы


 
Vlad ©   (2003-12-01 20:11) [31]

Ну так сортируй по тем трем полям, а вычисляемое не трогай


 
dj-amigo ©   (2003-12-01 20:38) [32]

Vlad, Если я отсортирую "по тем трём полям", то у меня отсортируется только главная таблица, а вычислимое поле, по которому мне надо сортировать другую, подчиненную таблицу,и значение которого формируется из тех трех, останется не тронутым, а мне ведь надо отсортировать именно подчиненную таблицу и именно по этому вычислимому полю!


 
Anatoly Podgoretsky ©   (2003-12-01 20:49) [33]

Допрос партизана в гестапо не дал результатов, партизан молчал как рыба.


 
Vlad ©   (2003-12-01 20:50) [34]


> dj-amigo © (01.12.03 20:38) [32]

Тогда увы...
TQuery ты использовать не хочешь. Религия не позволяет.
TClientDataSet тоже.
Больше разумных вариантов не вижу.


 
dj-amigo ©   (2003-12-01 21:00) [35]

Vlad, может быть более продвинутые Grid"ы использовать?


 
dj-amigo ©   (2003-12-01 21:05) [36]

Anatoly Podgoretsky, Расчетное выражение у меня такое
DataSet.FieldByName("VC_ActorName").AsString
:=TblActorsPrjmir.FieldByName("A_LastName").AsString + " " + TblActorsPrjmir.FieldByName("A_FirstName").AsString + " " + TblActorsPrjmir.FieldByName("A_Patronymic").AsString;


 
Anatoly Podgoretsky ©   (2003-12-01 21:31) [37]

Лучший вариант перейти на SQL или включить эти поля во вторую таблицу и посторить по ним индекс


 
Black King   (2003-12-01 21:43) [38]

Kac predlagajet sdaca :o)


 
Vlad ©   (2003-12-01 21:46) [39]


> Black King (01.12.03 21:43) [38]

Это не наш метод :)


 
dj-amigo ©   (2003-12-01 21:47) [40]

Этот вариант нарушит всю нормализацию реляционной базы и возникнет куча разных аномалий... Зачем же я проводил нормализацию данных на этапе проектирования реляционной модели?
Тем более, чтобы распихать значения поля всех записей одной таблицы по полям соответствующих записей второй (подчиненной)таблицы понадобится куча времени(особенно когда много записей и втой и вдругой), слишком расточительно плучится...
А когда поле вычисляется по ходу без всяких дополнительных физических полей все стает на свои места!


 
Vlad ©   (2003-12-01 21:51) [41]


> dj-amigo © (01.12.03 21:47) [40]

Вот и мне непонятно, зачем ты проводил нормализацию, если все равно потом делаешь вычисляемое поле, и упорно не хочешь пользоваться SQL


 
Black King   (2003-12-01 21:54) [42]

>Зачем же я проводил нормализацию данных на этапе
>проектирования реляционной модели?
zachem?

jest" TQuery, v kotorom mozhno skazat" volshevnije slova : ORDER BY ...

eto tol"ko v pervij raz strashno... potom budesh plevaca na etot TTable..i ne toka :o)


 
dj-amigo ©   (2003-12-02 18:32) [43]

Люди, помогите кто в силах, эту проблему надо решать!


 
Плохиш_   (2003-12-02 18:45) [44]

>dj-amigo © (02.12.03 18:32) [43]

Уже 43 сообщение! Какой ужас при такой-то задаче.
Тебе уже и TQuery, и TClientDataSet предложили.
Может тебе профессию сменить?


 
dj-amigo ©   (2003-12-02 18:52) [45]

Плохиш_, Надо ведь людей чем-нибудь занять! Ты-то сам чего предложишь?


 
Vlad ©   (2003-12-02 18:53) [46]

Ты что, вобще пацанов слушать не хочешь ?
Хорошо. Предложу еще вариант.
Делай своего наследника TDataSet с возможностью сортировки по вычисляемому полю. Если хочешь гемморой на свою задницу.

P.S. Ди-джей тоже неплохая профессия. Может стоит задуматься ?


 
Плохиш_   (2003-12-02 18:55) [47]

>dj-amigo © (02.12.03 18:52) [45]

> Плохиш_, Надо ведь людей чем-нибудь занять! Ты-то сам чего
> предложишь?

Тебе предлагать не вижу смысла, да и без тебя занятий хватает


 
dj-amigo ©   (2003-12-02 18:59) [48]

Vlad, мне нужно готовое отработанное решение, а не геморой искать на свою задницу, кстати похоже на то, что я его уже почти нашел и без вас! Но все равно спасибо за массу реальных предложений, а профессию менять я не собираюсь :-)



Страницы: 1 2 вся ветка

Текущий архив: 2003.12.26;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.022 c
14-86510
Knight
2003-12-01 00:22
2003.12.26
Что сон для человека?


3-86268
ki11er
2003-12-03 14:12
2003.12.26
Как записать запрос в таблицу?


4-86588
Sirakuz
2003-10-30 17:38
2003.12.26
Чтение/запись файлов проецируемых в память


14-86523
Нурик
2003-12-04 01:36
2003.12.26
Где можно скачтать Install Shield?


1-86456
Zilog_
2003-12-13 11:28
2003.12.26
Как Tcolor преобразовать в шестнадцатиричное представление