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

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

Как сделать мгновенно? [D7, MySQL]


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

FBuilder ©   (2008-01-16 13:11:00) 

Есть база данных удаленное на по локальной сетке.
Есть таблица (SQL запрос), которая отображает ее состояние.

табилца отображается пользователю - он ее видит, может по ней пробежаться.
записей порядка 100.

проблема: табилца обновляется по такймеру - ра зв 3 секунды.
сейчас получается что это все занмиает около 250 при апдейте :( У пользователя соответственно гладкого перемещения по таблице - нет - при обновлении все замирает и скрол - дергается.

Вопрос: как добиться более гладкого хождения пользователя по обновляемой таблице?

Mysql 4.0.x, DBExpress, dbx4mysql.dll

?


clickmaker   (2008-01-17 15:34:00) [1]

я бы с ListView делал
на сервере:
пришел запрос - запись помечаем как измененную или запись добавляем
раз в сек делаем селект типа такого
select blabla from table where Modified = 1
выбранную инфу отдаем клиенту
на клиенте пробегаем по ListView. Если есть ID измененной записи, меняем ей цвет или иконку.
Если нет ID, добавляем строчку, делаем видимой
Потом можно по аналогии с почтовиком: юзер кликнул - update table set Modified = 0 where ID = @ID. Типа прочтенное, больше не беспокоить.

Еще вариант: прямо с сервера, куда заносятся данные как-то оповещать клиента, а потом уже заносить в базу. но тут все зависит от того, как между ними связь организована


ketmar   (2008-01-17 15:15:00) [2]

есть мнение, что оно изначально криво спроектировано. и мнение такое не у меня одного.


Rater1   (2008-01-17 13:52:00) [3]

А ты пойди другим путём.
Возьми StringGrid и заполняй его анализом пришедшего select
по ID какому-нить...
Изменяющуюся запись цветом выделяй на пару секунд, типа поменялась...
Тогда ничего прыгать не будет


Kolan   (2008-01-16 19:20:00) [4]

Много не определил какая из сабжа…


Kolan   (2008-01-16 19:18:00) [5]

> www.taxi-office.ru

От и скрины…


Kolan   (2008-01-16 19:17:00) [6]

> Я не ошибся — я сделал! УРА!

Ура, ты сделал костыль. Покажи для интереса скрин формы с гридом этим, просто чтобы я для себя успокоился…


FBuilder   (2008-01-16 19:17:00) [7]

Всем - спасибо!


FBuilder   (2008-01-16 19:16:00) [8]

> а как умудряются так часто вводить новые данные? прямая связь с мозгом таксиста?

Прямая связь с жопой таксиста лежит у меня сзади - GPS + датчик наличия пассажиров в салоне, что тоже будет добавляться в эту программу :)

А вообще - если при случае нужно будет что-то подобное - пишите - www.taxi-office.ru


FBuilder   (2008-01-16 19:15:00) [9]

Я не ошибся - я сделал! УРА!

Без паралельных потоков - все просто и правильно - все грузиться не напрямую в TSimpleDataSet, а в TClientDataSet но через TSQLQuery.
Пока оно не догрузиться, данные в TClientDataSet не изменяться, а соответственно и юзвер будет все видеть нормально без рывков.


Kolan   (2008-01-16 18:30:00) [10]

> а как умудряются так часто вводить новые данные? прямая
> связь с мозгом таксиста?

Да имхо там только новый добавляются. Видимо диспетчеру звонят, делают заказ — он вбивает. А таксистам звонит другая тетка. Вот для неё и прога, она видит вбитую запись и связывается с таксистом… Нафих ей при этом видет «номер каротчки» непонятно… :)


clickmaker   (2008-01-16 18:21:00) [11]


> [43] FBuilder   (16.01.08 17:08)

а как умудряются так часто вводить новые данные? прямая связь с мозгом таксиста?


Kolan   (2008-01-16 17:16:00) [12]

Ты ошибся при проектировании UI так как не понял, что будет делать пользователь интерфейса. А теперь борешься с последствиями.

Раз у них моники широкие чтобы все влезо, то можно пойти дальше — приколи купить сервер помощнее …


Kolan   (2008-01-16 17:14:00) [13]

> У тебя на клавиатуре все клавиши всегда нужны? :)

Нет, если бы клава была не из пластика, то некоторые спрятвть было бы неплохо.
Что собссно некоторые и пытаются сделать:
http://www.artlebedev.ru/everything/optimus/
http://www.artlebedev.ru/everything/optimus-tactus/


Правильный_Вася   (2008-01-16 17:13:00) [14]

оправдывать глупость смысла нет, если тебя не интересует нормальное решение
а с твоим подходом нормального решения нет
напоминает:
нужно выкопать котлован в болоте, но у меня только детский совок и жвачка
но выкопать нужно только ими
как жвачкой проапгрейдлить совок?


FBuilder   (2008-01-16 17:08:00) [15]

> Я те точно говорю твои 20 полей и не нужны всегда, начал бы ты с этого…
У тебя на клавиатуре все клавиши всегда нужны? :)

Для меня такой разговор будет равносилен этому вопросу :(


Kolan   (2008-01-16 17:06:00) [16]

Я те точно говорю твои 20 полей и не нужны всегда, начал бы ты с этого…


Kolan   (2008-01-16 17:05:00) [17]

> Основной поток должен не к базе стучаться — а к внутреннему
> dataset в котором эти данные уже есть. Но я что-то уже запутался
> как мне их из одного дата сета получит ьв другой :(

Передать в событии например, получил дата сет — вызывается событие в котором и передается нужный дата сет.

Я бы его(сам объект) каждый раз создавал, чтобы с синхронизацией не парится…

Ты правильно мыслишь, но как подмену дата сета незаметно сделать — вот что я не представляю…


FBuilder   (2008-01-16 17:02:00) [18]

>Шо и адрес с именем полностью видны? Или у них Apple cinema 30" моники?
Нет, но широкоформатные.

>Как этот вопрос связан с сабжем?
Так, что удинственный путь, который я вижу - это параделльный поток, который получает всю табилцу, теряет невидимо для пользователя эти 250 мсек, но зато он их потерял - все - их нужно забросить в табилцу только - отобразить уже в основном потоке.
Основной поток должен не к базе стучаться - а к внутреннему dataset в котором эти данные уже есть. Но я что-то уже запутался как мне их из одного дата сета получит ьв другой :(


Kolan   (2008-01-16 16:52:00) [19]

> Помещаються впритык :(

Шо и адрес с именем полностью видны? Или у них Apple cinema 30" моники?


> Вопросы ка кперебрасывать данные полученные уже внтури приложения
> но из другого потока?

Как этот вопрос связан с сабжем?


FBuilder   (2008-01-16 16:48:00) [20]

Помещаються впритык :(

Вопросы ка кперебрасывать данные полученные уже внтури приложения но из другого потока?


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

Наверх

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