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