C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Выборка из базы с прогрессбаром, ...
lonejan
  Отправлено: 23.03.2007, 16:15


Ученик-кочегар

Группа: Участник
Сообщений: 4



Как сделать выборку из базы и показать прогресс выборки и возможно ли это всё с таким вот запросом, (когда выборка идёт из подзапроса)
SQL
SELECT
t.descr,
sum(t.ost),
sum(t.rez)
FROM (SELECT RTRIM(s.descr) descr,
sum(r.sp125) ost,
0 rez
FROM rg119 r LEFT JOIN sc12 s ON r.sp122=s.id
WHERE period=CONVERT(DATETIME,'20070301',20)
GROUP BY s.descr
UNION
SELECT
RTRIM(s.descr),
0,
sum(r.sp144)
FROM rg139 r LEFT JOIN sc12 s ON r.sp143=s.id
WHERE period=CONVERT(DATETIME,'20070301',20)
GROUP BY s.descr)
t
GROUP BY
t.descr
Gedeon
Отправлено: 23.03.2007, 16:28


Ветеран

Группа: Модератор
Сообщений: 1742



Это не возможно вообще, уже обсуждалось, юзайте поиск.
lonejan
Отправлено: 23.03.2007, 17:23


Ученик-кочегар

Группа: Участник
Сообщений: 4



Это как раз и возможно, только не совсем знаю как реализовать это в билдере, и ещё есть сомнения насчёт того, что оно сначала выполнит подзапрос, а потом начнёт выбирать из него данные, в таком случае это будет почти бесполезно
desivers
Отправлено: 23.03.2007, 17:50


Дежурный стрелочник

Группа: Участник
Сообщений: 32



раскажи какие у тебя есть идеи а мы их поробуем реализовать.
Ramzay
Отправлено: 23.03.2007, 19:07


Дежурный стрелочник

Группа: Участник
Сообщений: 31



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

Перед выполнением запроса уже приблизительно известно сколько он будет работать. Ставишь таймере время где-то два-три раза большее и запускаешь по таймеру прогрессбар. Если запрос выполнится раньше, чем прогрессбар дойдет до конца, то никто тебе дурного слова не скажет. Можно прогрессбар в первой половине пути заставить бежать быстрее, а после того как он перевалит за середину — медленнее. Так делает Билл Гейтс, когда мы пытаемся остановить службу.

Gedeon
Отправлено: 23.03.2007, 19:09


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Ramzay @ 23.03.2007, 19:07)
Я не знаю как правильно сделать прогрессбар, но я знаю средство как рассеить твою грусть. Надо просто обмануть юзера.

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

Ну да, и обьем данных на сервере не меняется и нагрузка всегда одинаковая yu.gif
Ramzay
Отправлено: 23.03.2007, 20:36


Дежурный стрелочник

Группа: Участник
Сообщений: 31



QUOTE
Ну да, и обьем данных на сервере не меняется и нагрузка всегда одинаковая


Смотреть нужно по месту. Во всяком случае Билли до сих пор нас обманывает. Похожая ситуация в IE, когда прогрессбар отображает ход загрузки страницы, реально не зная как скоро он ее выкачает.
Tantos
Отправлено: 24.03.2007, 09:00


Станционный диспетчер

Группа: Участник
Сообщений: 108



C IE как раз гораздо проще, т.к. известены размер файла, текущая скорость передачи, количество переданных байт и прошедшее время. Исходя из этого, можно довольно-таки просто рассчитать приблизительно оставшееся время загрузки. А с БД такой фокус не пройдет. Максимум, можно показать диалог по типу копирования файла Проводником.

Отредактировано Tantos — 24.03.2007, 16:02

Вернуться в Работа с базами данных в C++Builder