Форум: "Базы";
Текущий архив: 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.007 c