Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];

Вниз

Сортировка по вычислимому полю в наборе данных 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]

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



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

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

Наверх





Память: 0.53 MB
Время: 0.01 c
14-86495
Nelud
2003-12-04 19:08
2003.12.26
Нужен алгоритм вычисления корня N степени из действительного числ


1-86406
Spotter
2003-12-14 18:43
2003.12.26
Обработка onKeyDown в TRxRichEdite


1-86371
Clift
2003-12-14 00:27
2003.12.26
Системное время


4-86587
Erazzer
2003-10-29 13:29
2003.12.26
Перехват видеодрайвера


14-86558
p0tia
2003-12-01 15:22
2003.12.26
Программа для обменников





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский