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

Вниз

Как узнать количество записей...   Найти похожие ветки 

 
tovSuhov ©   (2002-02-18 14:21) [0]

... возвращенных оператором select в ADOQuery, не пробегая их до конца?


 
Alexandr ©   (2002-02-18 14:26) [1]

никак.
Выполни другой запрос, который тебе вернет кол-во записей первого запроса.
этот запрос обычно получается заменой select .... from...
на select count(*) from...
но не всегда...


 
Yuri Btr ©   (2002-02-18 14:34) [2]

Query1.Recordset.RecordCount;


 
petr_v_a ©   (2002-02-18 14:43) [3]

Не выбирая до конца узнать невозможно, так устроен OCI (((:


 
Сергей Иванов ©   (2002-02-18 15:52) [4]

Как вариант можно попробовать следующее:
создаем MTS DataModule, на него кидаем тот же на select count(*) from..., в библиотеке типов (*.tlb) пишем метод, например GetRecsCount, который выполняет Query и возвращает клиенту кол-во записей. Регистрим *.tlb в качестве MTS-объекта.
На клиенте:
//
var Server :IMyServer;
//
function GetIt :integer;
begin
result := 0;
try
if Server=nil then Server := CreateRemote("YOU_NET_SERVER_NAME")
result := GetRecsCount;
if Server<>nil then Server := nil;
except
if Server<>nil then Server := nil;
end;
end;

И не надо ничего на клиента перекачивать.


 
McSimm ©   (2002-02-18 16:05) [5]

Вопрос был " не пробегая их до конца", а не "Не выбирая".
Совершенно правильный и простой ответ дал:
>Yuri Btr © (18.02.02 14:34)
>Query1.Recordset.RecordCount;


 
McSimm ©   (2002-02-18 16:06) [6]

Но можно и
Query1.RecordCount;


 
drpass ©   (2002-02-18 16:23) [7]

RecordCount только при работе с ADO и BDE возвращает количество записей в наборе.
В конце-концов, просто добавь поле count(*) к запросу - универсальный метод


 
Johnmen ©   (2002-02-18 16:27) [8]

>McSimm © : А ты уверен, что при выполнении Query1.RecordCount;
записи реально не перекачаются на клиента ?!


 
Johnmen ©   (2002-02-18 16:34) [9]

>drpass © : Ты хочешь сказать, что select f1,f2,f3,count(*) from tbltest1 пройдет ???!!!


 
McSimm ©   (2002-02-18 17:14) [10]

>А ты уверен, что при выполнении Query1.RecordCount;
>записи реально не перекачаются на клиента ?!
Уверен. Если они и перекачиваются, то при открытии, а не при проверке RecordCount. :)

Мне кажется автор имел в виду " не пробегая в цикле по записям для их подсчета". Возможно я ошибаюсь.
Если используется серверный курсор, то единственный способ - выполнение отдельного запроса с Count(). Если clUseClient - то записи уже здесь и RecordCount уже известен


 
Johnmen ©   (2002-02-18 17:27) [11]

>McSimm © : то есть если ADOQuery.Open, то записи тутже и все перекачиваютя ?
Если это так, то удручает отсутствие оптимизации :(


 
wicked ©   (2002-02-18 20:27) [12]

2 Johnmen © (18.02.02 17:27)
вообще-то это не отсутствие оптимизации, а особенность клиентских курсоров... так устроены ADO и с этим ничего не поделать... единственный способ хоть как-то это соптимизировать - использовать многопоточность ADO....



Страницы: 1 вся ветка

Текущий архив: 2002.03.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-57450
esprit
2002-03-04 03:36
2002.03.18
работа с файлами


14-57498
panov
2002-01-22 22:14
2002.03.18
О языке. О русском. Мозги набекрень от вопросов.


14-57509
Niko_n
2002-02-04 21:04
2002.03.18
СОМ 2


14-57492
M-A-B
2002-02-01 12:14
2002.03.18
СОМ-порт


7-57532
Serghei
2001-12-14 16:25
2002.03.18
Браузер в OleContainer