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

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

Kак пересортировать таблицу после изменения поля в самой таблице?


Страницы:   1 2 3

Rentgen ©   (2006-08-18 08:28:00) 

Всем привет!
Подскажите пожалуйста:
Есть ДБГрид и СКЛ-запрос с сортировкой.
как пересортировать таблицу после изменения поля в самой таблице?
т.е. если изменить сортирующее поле, то должна пройти пересортировка.

компоненты:
DBGrid;
DataSource;
ADOQuery;
ADOConnection.



BDS2006
Acces2006


Dok   (2006-08-21 10:32:00) [21]


> Ламерство? помоему ламерство это нагружать сервер ненужными
> сортировками.
> У меня в сети работает одновременно 150 чел. Первоначальный
> запрос я отдаю юзеру отсортированный естественно на сервере,
>  а остальные сортировки, которые хочется дяде Васе или тете
> Маше, делаются локально, неперезапрашивать же запрос на
> сервере из-зи того что тетя Маша хочет видеть другую сортировку.
>

Первоначальный запрос у тебя всегда меньше 100 записей? Или другими словами - как ты определяешь, что сервер не надо загружать такой сортировкой, пусть клиент сортирует?


evvcom   (2006-08-21 08:45:00) [22]

> [23] Dok   (18.08.06 16:04)

Ты перепутал мухи и котлеты. Как ты в [32] говоришь? Ламерство? Вот запросы

> select * from table

и есть ламерство. Мое имхо. Без обид. Естественно такой запрос потянет мулик записей на клиента. И не только локальная машина умрет на сортировке, но и крутому серваку придется нелегко сортировать миллион записей. Потому

> [15] Dok   (18.08.06 11:33)
> > Stanislav ©   (18.08.06 11:10) [14]
> > Dok   (18.08.06 10:18) [10]
> > Зачем миллион на клиенте?
> Затем чтобы получить корректную сортировку.

тоже то ли ламерство, то ли еще что-то. Естественно корректная сортировка не получится без фетча "всех" записей, но всех - это тех, которые вернул запрос, а не всего миллиона. Так что давай разделяй там у себя, мухи отдельно, котлеты отдельно.
P.S. Кстати, не знаю как eh-грид, а у dx не доступна локальная сортировка без флага FetchAllRows.


Stanislav   (2006-08-19 11:20:00) [23]

Dok   (18.08.06 17:44) [32]
Ламерство? помоему ламерство это нагружать сервер ненужными сортировками.
У меня в сети работает одновременно 150 чел. Первоначальный запрос я отдаю юзеру отсортированный естественно на сервере, а остальные сортировки, которые хочется дяде Васе или тете Маше, делаются локально, неперезапрашивать же запрос на сервере из-зи того что тетя Маша хочет видеть другую сортировку.


Anatoly Podgoretsky   (2006-08-18 23:45:00) [24]

Dok   (18.08.06 10:19) [11]
Не путаешь с real time, а говоришь про интерактивность?


Anatoly Podgoretsky   (2006-08-18 23:42:00) [25]

Rentgen ©   (18.08.06 09:58) [7]
> Прикрутить волшебную кнопку "Обновить"
хочется интерактивности

Это интерактивность в самом чистом виде.


Dok   (2006-08-18 17:44:00) [26]

ну в общем то да. но сортировать на клиенте - это ламерство. имхо.


Stanislav   (2006-08-18 17:18:00) [27]

а я не буду фитчить 40, я отберу по параметру в SQL запросе, сколько попадет, столько попадет, но не 100000. Я же нигде не указал конкретно вернуть 40 записей, если бы я написал
Select TOP 40 * from UCHEN WHERE IDSCHOLL=543 AND IDCLASS=1
Тогда другой вопрос.


Dok   (2006-08-18 17:11:00) [28]


> Если этого - же класса, то попадут и они

С какой это стати? Если Вы зафитчите 40?
Выборка возвращает:
А
Б
Я
...
Ж --- 40-я
М --- 41-я
К  --- 42-я
Сортировка локально:
А
Б
Ж --- М и К отсутсвуют
...
Я
На сервере:
А
Б
К
М
...
Ж
Чувствуем разницу?


Stanislav   (2006-08-18 16:58:00) [29]

Если этого - же класса, то попадут и они
Такая структура:
ID
IDSCHOOL
IDCLASS
FIO

Я отбераю Select * from UCHEN WHERE IDSCHOLL=543 AND IDCLASS=1
А на клиенте сколько записей пришло с сервера столько и отсортирую хоть 1 хоть 100 хоть все.


saxon   (2006-08-18 16:55:00) [30]


> А зачем мне видеть М и К с других школ?

Чтоб пойти и в бубен им надавать. :))

Это он к тому что, надо всетаки сортировать на сервере, а вот уж из уже сортированных тянуть на клиент тока 40 (ну или стока скока надо).


Dok   (2006-08-18 16:49:00) [31]


> А зачем мне видеть М и К с других школ?

почему же других, этой же школы. Они идут 41 и 42 записями.


Stanislav   (2006-08-18 16:47:00) [32]

А зачем мне видеть М и К с других школ?


Dok   (2006-08-18 16:36:00) [33]


> На клиенте. Конечно без закачки всех записей.
> Допустим в таблице хранятся все ученики города их 100000,
>  а мне нужно только 1-А класс 5-й школы, я отберу запросом
> только 40 записей, соответствующих этому классу и отсортирую
> по порядку на клиенте - и все будет правильно.

что будет правильно? допустим между буквами А и Я выкинутся М и К, а сортировка на клиенте скажет что таких нет школьников, вот если бы ты на сервере сорировал то без вопросов.


Stanislav   (2006-08-18 16:06:00) [34]

Dok   (18.08.06 15:25) [21]

На клиенте. Конечно без закачки всех записей.
Допустим в таблице хранятся все ученики города их 100000, а мне нужно только 1-А класс 5-й школы, я отберу запросом только 40 записей, соответствующих этому классу и отсортирую по порядку на клиенте - и все будет правильно.


Dok   (2006-08-18 16:04:00) [35]


> Что ты называешь закачкой всех записей? Возвращенных запросом
> (он далеко не обязательно миллион вернет) или всех возможных
> записей таблиц(ы)?

Вам нужно отсиртировать набор данных из БД? Вы выполняете запрос: select * from table. Фитчите 50 записей. И сортируете локально. Где гарантия что если бы Вы отсортировали на сервере, то в эти 50 записей попали бы тоже эти 50 записей?


evvcom   (2006-08-18 15:46:00) [36]

> [21] Dok   (18.08.06 15:25)
> Без закачки всех записей?

Что ты называешь закачкой всех записей? Возвращенных запросом (он далеко не обязательно миллион вернет) или всех возможных записей таблиц(ы)?


Dok   (2006-08-18 15:25:00) [37]


> Все правильно там отсортируется.

Где правильно отсортируется? Локально? Без закачки всех записей?


Stanislav   (2006-08-18 15:02:00) [38]

Dok   (18.08.06 11:33) [15]  
???
Ниче непонял.
Все правильно там отсортируется.


Dok   (2006-08-18 14:43:00) [39]


> и что там смотреть? особенно с учетом того что база Acces2006,
>  (!!!!) кстати, 2006 (????), ладно неважно, главное что
> это скорее всего mdb. (т.е. не программа access имеется
> в виду, а база)

сорри , думал мс скл


sniknik   (2006-08-18 13:24:00) [40]

> профайлер запусти
и что там смотреть? особенно с учетом того что база Acces2006, (!!!!) кстати, 2006 (????), ладно неважно, главное что это скорее всего mdb. (т.е. не программа access имеется в виду, а база)

p.s. это локальная сортировка(создание индекса на клиенте), если конечно тип у рекордсета локальный (что так и есть потому как Sort на серверном курсоре не работает, вернет ошибку), можно даже таблицу вовсе от коннекта оторвать ничего не изменится (т.е. даже если бы была возможность запустить профайлер, он бы ничего не показал, мы и данные от конекта отключили и сам конект закрыли, а оно все равно работает.)
а ты думал оно перезапрос делает?


Страницы:   1 2 3

Наверх

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