![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Счётчик для TQuery.Last??? [D6]
Max_ © (2003-06-18 19:39:00)Как при выполнении метода TQuery.Last или TTable.Last "узнать" о скорости "перекачки" данных, т.е. что бы был счётчик? Данные качаются из Oracle!
NickBat (2003-06-19 18:07:00) [1]> хых, нафига пользователю спрашивается отчёт по кускам? Он его потом шо клеить будет?
Н-да... А вы отчеты на рулонах печатаете?
Тогда конечно придется клеить.
И знаете, что по моему автору ветки уже по барабану наши споры, так, что давайте закончим.
jack128 (2003-06-19 16:25:00) [2]
> e:Cardinal;
> begin
> GetExitCodeThread(Second_thread.Handle,e);
> ExitThread(e);
> end;
ExitThread выходит из текущего потока(из того из которого ты вызвал эту функцию) и входной параметр у этой функции не хендл.
> Признавайся у тебя хелп инсталлирован или нет?
копирайт Anatoly Podgoretsky ©
Fiend (2003-06-19 16:25:00) [3]То NickBat:
хых, нафига пользователю спрашивается отчёт по кускам? Он его потом шо клеить будет? или вы еще хотите приблуду сделать шоб куски отчётов клеила?
NickBat (2003-06-19 16:20:00) [4]> Fiend © (19.06.03 15:45)
Внимательный вы наш. :)) Я имел ввиду отмену фетч.
Почему его не спасет первые Н записей непонятно. Можно ведь отчет частями делать.
Fiend (2003-06-19 15:45:00) [5]То NickBat: как тока вы получили первую запись- запрос уже выполнен и идёт фетч. А это разные вещи.
Про Н-записей - оно то есть, но его не спасёт.
То Max_:
И про то что прерывать запрос надо ТерминатеСред - полная чушь! Потому как разрушается в лучшем случае поток, но никак не отменяется выполнение АПИ библиотеки через которую пользуешь БД.
Для того чтобы что-то думать по этому поводу, надо определиться точно, что у тебя за БД, и через что ты с нейф работаешь
NickBat (2003-06-19 12:42:00) [6]Я плохо знаком с Оракл, но во первых там есть возможность выбора из запроса первых Н записей, а во-вторых, если мне не изменяет память, там есть возможность остановить выполнение запроса.
Max_ (2003-06-19 12:21:00) [7]Я понял, но ещё 1 вопрос не даёт покоя: когда запускаешь метод Last в другом потоке- как его прервать в любой момент! (я имею ввиду поток) Как это сделать???? TerminateThread- все говорят, что это плохо! Тогда я пишу:
var
e:Cardinal;
begin
GetExitCodeThread(Second_thread.Handle,e);
ExitThread(e);
end;
А он мне из главного потока выходит, хоть я и указал ему Second_thread.Handle???
Zacho (2003-06-19 12:19:00) [8]
> Max_ (19.06.03 12:01)
Отчеты вовсе не нужно выводить в грид - они предназначены для печати. В любом случае, если для построения отчета нужны несколько десятков тысяч записей - их все равно всепридется выбирать на клиента, и пользователю придется ждать. Если счетчик закаченных записей нужен для организации чего-то типа прогрессбара, что бы юзер не скучал и думал, что прога зависла, то можно просто в отдельном потоке вывести окошко с какой-либо анимацией (или "фальшивый" прогрессбар сделать, как в IE).
> P.S. А кто-нибудь вообще работал нпр. с SQL Navigator? (Там
> и скролить можно и нужно!!!!) Я бы не сказал, что это весьма
> неполноценная прога! (Zacho ©) :)
Не знаю я, что такое SQL Navigator, но если там действительно нужноскроллить десятки тысяч записей - то imho, либо это действительно неполноценная программа, либо просто ты не умеешь правильно с ним работать :)
Sandman25 (2003-06-19 12:15:00) [9]>Так я про отчёты и говорю- у нас на работе всё к ним сводится!
А если так, то вообще не нужно никакого отображения. Запустили Query.Open, сразу после него вывели сообщение в динамик (чтобы пользователь услышал и подошел к компу), и сразу Preview для печати.
Зачем DBGrid?
Sandman25 (2003-06-19 12:03:00) [10]Max_
Перед запросом данных с сервера запросите у пользователя ввести фильтр (обычно по дате), а затем читайте все, что он запросил без всяких счетчиков и прогрессбаров. Если пользователь был настолько ленив (или глуп), что не указал фильтр (указал плохой), то пускай сидит и ждет, пока все данные не закачаются. Через несколько таких запусков он научится указывать правильный фильтр, чтобы получить только те данные, которые ему нужны.
Max_ (2003-06-19 12:01:00) [11]Так я про отчёты и говорю- у нас на работе всё к ним сводится!
>>А кто тебе мешает составить запрос таким образом, чтобы выводились данные и с учетом предыдущих запросов?-- Так мне в мануале так и писать:
1)Запросы, которые превышают 10000 не писать!
2)Не скролить полученный результат!
3)Один запрос не писать, лучше этапами, по 5-10!
P.S. А кто-нибудь вообще работал нпр. с SQL Navigator? (Там и скролить можно и нужно!!!!) Я бы не сказал, что это весьма неполноценнаяпрога! (Zacho ©) :)
Anatoly Podgoretsky (2003-06-19 11:56:00) [12]Колесо на мышке рассплавится
Наталия (2003-06-19 11:46:00) [13]Max_ (19.06.03 11:34)
Как пользователь на экране будет просматривать 500000 тысяч записей? Он их что - проанализирует, обобщит, сделает выводы? Просто просмотрит? Одно дело отчёт какой-нибудь из 10000 записей на принтер выдать, другое дело пользователю их на экран вывалить, чтобы он глаза сломал.
Zacho (2003-06-19 11:42:00) [14]
> Max_ (19.06.03 11:34)
А мне кажется, что программа которая выбирает на клиента десятки тысяч записей для визуальнойработы с ними будет весьма неполноценной. :)
Ну пойми, не в состоянии нормальный человек работать с таким кол-вом записей в гриде. Что он с ними будет делать ? Туда-сюда скроллить, тупо уставившись в монитор ?
bushmen (2003-06-19 11:38:00) [15]А кто тебе мешает составить запрос таким образом, чтобы выводились данные и с учетом предыдущих запросов?
Max_ (2003-06-19 11:34:00) [16]"выводить пользователям 10000-20000 в визуальные компоненты для того"- А это разве много, когда реальных данных порой бывает по 500000!!!! Мне кажется такая программа будет весьма неполноценной! И ещё вопрос: так зачем тогда вообще запросы писать, если нельзя потом результатов посмотреть? Запрет- это не выход из положения! :)
Наталия (2003-06-19 11:25:00) [17]"юзеру ты не запретишь скролить полученный результат (Last) и не обьяснишь, что это никому не нужно и лучше их не скролить! "
Вот на мой взгляд лучше программисту запретить выводить пользователям 10000-20000 в визуальные компоненты для того, чтобы они "скролилил".
Max_ (2003-06-19 10:46:00) [18]При работе с Oracl"oм это очень полезная и нужная штука! В среднем у нас в таблице храниться 100000-150000. В запросах получается 10000-20000 записей и юзеру ты не запретишь скролить полученный результат (Last) и не обьяснишь, что это никому не нужно и лучше их не скролить! SQL Navigator, The Frog, OraEdit- все они обладают этими возможностями! Также как и проблема с методом Last когда запускаешь его в другом потоке и нужно его прервать! Как ето сделать???? Написал бы кто-нибудь, а то пишут такие процедуры которые в цикле! :)
Johnmen (2003-06-19 09:41:00) [19]>Max_
Все-таки ты хорошенько подумай, ЗАЧЕМ тебе это ?
Если будешь упорствовать в своем непонятном желании, то придется изучить набор функций библиотеки oci.dll или той, которую используешь.
Max_ (2003-06-18 20:50:00) [20]скорость While цикла намного меньше чем у Last!!! Может на сервер обращатся и оттуда брать инфу?