Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.009 c
14-44835
Soft
2003-06-26 17:50
2003.07.14
Русский Линукс всего за 50$. А XP+Ms office=???$


1-44753
stalker780
2003-07-01 16:50
2003.07.14
надо сделать свой хинт


3-44604
Dennis Erokhin
2003-06-21 12:10
2003.07.14
Как заставить BDE работать через 2 разных GDS32.DLL?


4-44954
maxik
2003-05-13 11:35
2003.07.14
taskbar


14-44843
CHM
2003-06-25 12:11
2003.07.14
Откуда можно скачать программу для создания СНМ - файлов?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский