Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
2 GAMER (vi.k) 04/09/2002 - 09:22:57
      Re: 2 GAMER (Фдуч) 04/09/2002 - 12:03:37
      Re: 2 GAMER (vi.k) 05/09/2002 - 08:10:49
      Re: 2 GAMER (GAMER) 05/09/2002 - 13:21:59
      Re: 2 GAMER (vi.k) 06/09/2002 - 15:52:27

> Original message text:
> From: vi.k - 04/09/2002 - 09:22:57
> Subject:2 GAMER
> -----------------
> Я делаю так:
>
> Таймер не использую вообще.
> Все данные вывожу в Гриду, которая не хранит данные, а только отображает те,
> что я ей сую (TGridView для Delphi и C++Builder)
> Формирую запрос на выборку в виде
> "SELECT ??? FROM ... WHERE ... ORDER BY ... GROUP BY"
>
> И отправляю этот запрос собственной функции,
> которая для начала вместо ??? вставляет COUNT(*).
> И узнает сколько же всего записей на данный момент существует.
> В Гриде соответственно устанавливаю количество строк
> (пользователь сразу видит сколько записей имеется)
> - сейчас появилась новая фича SQL_CALC_FOUND_ROWS, но я ей пока не научился пользоваться.
>
> Затем вместо ??? ставлю то, что там и должно быть и добавляю в конец "LIMIT i,n".
>
> Где i - в начале всегда 0,
> n - подбираю сам исходя из данных (автоматизировать вычисление n пока не научился).
> Вот тебе и первая выборка, которую и отображаю на экране.
>
> В зависимости от того куда юзер крутанул колесо (сдвинул scrollbar
> и т.д., и т.п.) показываю очередную порцию данных
> (варьирую параметр i в LIMIT из расчёта n/2 выше текущей строки и n/2 ниже),
> при этом всегда подправляя по мере
> надобности количество строк в выборке/гриде (если юзер пытается увидеть
> последние строки, а их там нет или наоборот больше чем надо). По хорошему
> тут ещё можно кэшировать данные, параметр i иначе вычислять (в зависимости
> от имеющихся кэшированных данных, от направления движения юзера по гриде и т.д.),
> делать предупреждающее чтение и т.д., но я это пока делать не научился.
> А также проверять на изменения если новая выборка пересекается с прежней
> (у меня за правило держать поле TIMESTAMP) - при линейном движении вверх или вниз они
> всегда будут пересекаться.
>
> При этом всём программу стараюсь строить таким образом, чтоб пользователь
> не сильно расстроился, если запись изменилась или была удалена.
> Он должен понять, что он видит данные на какой-то момент, а не те что
> реально в базе живут - самый простой способ этого добиться - подойти и
> объяснить :-)
> Ну а если нужна точность, так есть кнопка "Обновить".
>
> Так что вот - мне пока ни разу не было нужды вставлять таймер.
> В массе своей юзер редко может СМОТРЕТЬ на данные, которые сейчас
> уже модифицированы. А уж тем более - ими пользоваться.
> Вариант такой ни в коем случае не игнорирую. Но и лишний раз
> перепроверять не считаю нужным.
>
> Но если такая НЕОБХОДИМОСТЬ всё же возникает, то как мне кажется
> обновлять по таймеру данные в моём случае не сильно накладно - тут
> главное разумно подобрать параметр n - размер порций.
>
>


From: Фдуч - 04/09/2002 - 12:03:37
Subject:2 GAMER
-----------------
Прикольно, я читал Вашу с Gamer`ом переписку и там даже запостил напоследок... А чем плох TClientDataSet? Он специально приспособлен под трехзвенную архитектуру, к которой Вы сейчас подбираетесь.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
4520



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |