Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: CL | DM;

Вниз

Счётчик для 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.016 c
14-44891
Knight
2003-06-25 20:26
2003.07.14
Преобразователь имен...


1-44762
Man
2003-07-01 20:41
2003.07.14
Подскажите как сравнить 2 пер.


1-44734
MARcoDEN
2003-06-30 13:00
2003.07.14
Координаты пункта меню


6-44780
Drain_x
2003-05-07 12:11
2003.07.14
Как в win2000 программно открыть доступ к каталогу ?


6-44781
Antipich
2003-05-07 18:46
2003.07.14
Папка в инете