![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка связанного поля
Vadim © (2005-02-20 22:39:00)Есть две таблицы в Access. Работаю через ADO. В первой через Loocup смотрю поле из второй. Как отсортировать первую таблицу по полю из второй? Не запросом!
Anatoly Podgoretsky (2005-02-21 19:30:00) [1]Vadim (21.02.05 17:11) [24]
А согласно моей идеологии, нельзя сортировать, то чего нет, это поле по сути аналог OnGetText.
Johnmen (2005-02-21 17:23:00) [2]>Кстати, в сети лежит ряд алгоритмов (с кодом для Delphi)
>сортировки связанных полей. Разумеется рекордсет обладает такой
>возможностью.
Где можно почитать про эту возможность рекорсета ?
Sergey13 (2005-02-21 17:19:00) [3]2 [24] Vadim (21.02.05 17:11)
> Согласно идеологии представления данных такая сортировка д.б.
Хотелось бы ознакомится с идеологией. Ссылки на основопрложников не дашь.
Vadim (2005-02-21 17:11:00) [4]
> Ты считаешь, что этот путь - показатель позитивного и нестандартного
> мышления?
Прикол? Разумеется только экперимент. Кстати, есть хорошая мысль "Delphi нельзя изучить, его можно исследовать". Это из этой области.
> Любая сортировка набора данных предполагает наличие в нём
> поля, по которому сортируют. Отображаемые лукапным полем
> значения НЕ ЯВЛЯЮТСЯ значениями поля в составе НД.
Такое поле (из второй табл.) не является физическим в составе табл. первой, это ясно. Все, что мы видим на экране, это "виртуальные" поля, называйте как хотите, в памяти, на жест. диске, хоть на седьмом небе. И в них д.б. возможна сортировка. Кстати, в сети лежит ряд алгоритмов (с кодом для Delphi) сортировки связанных полей. Разумеется рекордсет обладает такой возможностью. Весь вопрос в том, что пристегнутое поле по запросу сортируется без проблем, а созданное новое и лукапленное с другим не хочет. Согласно идеологии представления данных такая сортировка д.б.
Johnmen (2005-02-21 16:39:00) [5]Если что-то не понятно в [9], то спрашивай...
Sergey13 (2005-02-21 16:38:00) [6]2[21] Vadim (21.02.05 16:30)
> Если же поле получаем путем создания нового (в т.ч. в ADOQuery) и лукапим его с другой таблицей
Ты считаешь, что этот путь - показатель позитивного и нестандартного мышления? 8-)
Vadim (2005-02-21 16:30:00) [7]Вот вы зацепились за запросы :-(((
Создается впечатление, что научились шаблонным вариантам, и больше ничего не интересует!
Сказал же, ну нет с этим проблем! Сделал и запросом. Все нормально работает. Причем сортируется как в процессе запроса
> SELECT *
> FROM
> Cities
> LEFT JOIN Streets ON Streets.City = City.Id
> LEFT JOIN Houses ON Houses.Street = Streets.Id
> ORDER BY ...
Спасибо, а то не знал :-))) Так и методом ADOQuery1.Sort := , тоже работает.
Повторяюсь - это спортивный интерес!!!
Если же поле получаем путем создания нового (в т.ч. в ADOQuery) и лукапим его с другой таблицей, то не работает! Хоть Sort, хоть запрос!
Конечно проще нацарапать шаблоны из книг, заработало и фиг с ним! А если разобраться, глядишь и чего нового узнаешь.
Johnmen (2005-02-21 11:02:00) [8]>Vadim (21.02.05 10:54) [18]
>Весь вопрос в целесообразности: решить одну проблему сортировки,
А нет таких проблем...
>напр. добавить 2 поля
Куда добавить ?
>- или все переписать заново, причем вылезут другие проблемы :-))
Какие именно проблемы ?
Sergey13 (2005-02-21 10:59:00) [9]2 [18] Vadim (21.02.05 10:54)
Подобные "временные меры" только усложняют неизбежнуюпеределку в будущем.
(с) из личного опыта.
Vadim (2005-02-21 10:54:00) [10]
> сортируется рекордсет - образ таблици в памяти, для простого
> запроса, для непростого со связями это будет "составной"
> рекордсет, поля в котором присутствуют физически.
> поймеш, попозже, когда таблица немного "подрастет".
Все это и ежу ясно. Весь вопрос в целесообразности: решить одну проблему сортировки, напр. добавить 2 поля - или все переписать заново, причем вылезут другие проблемы :-))
sniknik (2005-02-21 10:45:00) [11]Johnmen © (21.02.05 10:42) [16]
я бы тоже не вспомнил, только у него такое нежелание пользоваться запросами, совершенно необоснованое... хотел ее показать.
Johnmen (2005-02-21 10:42:00) [12]>sniknik © (21.02.05 10:39) [15]
Естественно. Но я не стал этого говорить, т.к. у автора и других проблем достаточно, с которыми он не может разобраться...
sniknik (2005-02-21 10:39:00) [13]> А как же тогда запрос? Он же сортирует.
сортируется рекордсет - образ таблици в памяти, для простого запроса, для непростого со связями это будет "составной" рекордсет, поля в котором присутствуют физически.
> Не вижу смысла всю прогу под запрос переписывать. Проще поля переставить ... :-))
поймеш, попозже, когда таблица немного "подрастет".
Johnmen © (21.02.05 10:07) [11]
> Но это не твой случай, т.к. запросами ты не пользуешься...:)
ну неявно то пользуется... достаточно подключится к MSSQL и посмотреть профайлером что идет на открытие таблици.
Vadim (2005-02-21 10:33:00) [14]Очень может быть :-))
Возможно в этом и проявляются ограничения ADOTable.
Sergey13 (2005-02-21 10:22:00) [15]2[12] Vadim (21.02.05 10:20)
> Все скатывается к запросу и все.
Так может в этом и есть сермяжная правда? 8-)
Vadim (2005-02-21 10:20:00) [16]Не вижу смысла всю прогу под запрос переписывать. Проще поля переставить ... :-))
Это уже спортивный интерес, кстати в сети нашел несколько подобных вопросов, но без внятного ответа. Все скатывается к запросу и все. Полагаю, как обычно нужно только "достучаться".
Johnmen (2005-02-21 10:07:00) [17]>А как же тогда запрос? Он же сортирует.
1. Я говорил про НД.
2. Кто такой "он", кто сортирует ???
3. В рез-те выполнения запроса НД получается отсортированным.
Но это не твой случай, т.к. запросами ты не пользуешься...:)
Vadim (2005-02-21 09:59:00) [18]
> Любая сортировка набора данных предполагает наличие в нём
> поля, по которому сортируют. Отображаемые лукапным полем
> значения НЕ ЯВЛЯЮТСЯ значениями поля в составе НД.
А как же тогда запрос? Он же сортирует.
> наверное разочарую тебя... но, ADOTable1 это не совсем table,
> если специально ничего не делал, это компанент под простой
> запрос вида select * from ADOTable1.TableName... т.е. запрос
> ты уже используеш гесмотря на нежелание.
По логике и ADOTable должен сортировать.
Johnmen (2005-02-21 09:40:00) [19]Любая сортировка набора данных предполагает наличие в нём поля, по которому сортируют. Отображаемые лукапным полем значения НЕ ЯВЛЯЮТСЯ значениями поля в составе НД.
ЮЮ (2005-02-21 09:34:00) [20]>Вообще - это классический пример (упрощенный) реляционной БД - показать все в одном гриде. Вот только еще и отсортировать бы ...
Только классическая реализация этого, ИМХО, следующая
SELECT *
FROM
Cities
LEFT JOIN Streets ON Streets.City = City.Id
LEFT JOIN Houses ON Houses.Street = Streets.Id
ORDER BY ...
и сортируй теперь как хочется
а ограничит ывборку поможет
WHERE