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

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

Сортировка связанного поля


Страницы:   1 2

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


Страницы:   1 2

Наверх

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