![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кол-во записей [D6, IB6.x, dBase, FoxPro]
Newman © (2003-10-11 15:44:00)
Здравствуйте!
Как подсчитать кол-во записей в таблице?????????
Желательно с примером.
Спасибо Newman
MsGuns (2003-10-13 13:26:00) [1]
Исчерпывающе св-во RecordCount описан у дедушки датасетов - TClientDataSet. Особенно смысл его "неоднозначности" становится понятен, если исп-ся внешний провайдер.
Anatoly Podgoretsky (2003-10-13 13:25:00) [2]
RecordCount will only be 100 after all the records have been visited
Приведеная тобой цитата относится к этому, посещение всех записей может потребовать много времени для SQL таблиц (читай серверов).
Vlad (2003-10-13 13:11:00) [3]
>Леван варшанидзе (13.10.03 12:59) [18]
Счастья в мире СУБД хватает ! :)))
Леван варшанидзе (2003-10-13 12:59:00) [4]
to Anatoly Podgoretsky
прочел и озадачился:
Description
Examine RecordCount to determine the total number of records in the dataset. Applications might use this property with RecNo to iterate through all the records in a dataset, though typically record iteration is handled with calls to First, Last, MoveBy, and Prior.
Note: Use RecordCount with care, because record counting can be a costly operation, especially for SQL queries that return large result sets. Generally, an application should only use RecordCount with Paradox and dBASE tables.
Воистине, нет счастья в этом мире СУБД, если даже recordcount не возвращает recordcount, а вожврашает оное тоько после посещения всех этих записей!
Anatoly Podgoretsky (2003-10-13 12:41:00) [5]
Нет как раз с оговорками
Вот для IBSql
Use the RecordCount property to see how many records are returned by a query. If the result set is to return 100 rows, RecordCount will only be 100 after all the records have been visited. That is, after looking at the first record, RecordCount is 1, and so forth.
Для остальных смотри соответствующие описания
Леван варшанидзе (2003-10-13 12:35:00) [6]
>Карелин Артем
Спасибо за информацию, но этот факт меня удивляет (если не сказать больше - убивает (или убывает ) :) )
а почему это так и где прочитать об этом поподробнее?
(ведь recordcount означает количество записей безо всякой оговорки, мол, сперва фетчите, а затем скажу, сколько у меня записей :)
Карелин Артем (2003-10-13 12:04:00) [7]
Леван Варшанидзе (13.10.03 11:56) [14]
В нормальных базах RecordCount выдает число фетченых записей, т.е. 1. Нужно вызывать методы типа FetchAll или Last для фетча всех записей, что в больших наборах данныхприведет к большим затратам памяти или даже к зависанию.
Леван Варшанидзе (2003-10-13 11:56:00) [8]
NAlexey :
MOJNO I TAK, KAK U VAS , NO IA MOGIU VIZVAT TAK:
N1:=COUNT(DBASENAME, "SELECT * FROM "+TABNAME)
I TAK :
N1:=COUNT(DBASENAME, "SELECT * FROM "+TABNAME+ " WHERE ID > 20");
TO EST, MNE KAJETSIA, BOLEE GIBKII VARIANT
VPROCHEM, O VKUSAX NE SPORIAT
A VASHE PREDIDUSHEE SOOBSHENIE, CHTO RESULTAT BUDET VSEGDA 1 , NE VERNO:
FUNKCIA VOZVRASHAET RECORDCOUNT OTKRITOGO TQUERY, SQL ZAPROS KOTOROGO PEREDAETSIA PO MARAMETRU.
NAlexey (2003-10-13 11:41:00) [9]
Тогда уж так:
function DSRecCount(const TabName: string): Integer;
const
SQLText = "select count(*) from %s";
begin
Result := 0;
with TQuery.Create(nil) do
try
DatabaseName := YDBName;
SQL.Text := Format(SQLText, [TabName]);
Open;
Result := Fields[0].Value;
finally
Free;
end;
end;
Vlad (2003-10-13 11:41:00) [10]
>NAlexey © (13.10.03 11:31) [11]
Не всегда.
Во первых неясно какая все-таки СУБД.
Во вторых если речь идет о БДЕ, то там RecordCount будет зависеть от настроек BDE - алиаса.
NAlexey (2003-10-13 11:31:00) [11]
>претензии принимаются :)
Притензия:
1) При таком вызове:
nn:=count(mainbase,"select * from "+tablename);
Результат будет всегда равен 1.
Леван Варшанидзе (2003-10-13 10:33:00) [12]
Функция
FUNCTION COUNT(basename,sqltext:string):INTEGER;
begin
RESULT:=0;
with tquery.Create(nil) do begin
DatabaseName:=basename;
SQL.Text:=sqltext;
TRY
OPEN();
RESULT:=RecordCount;
CLOSE();
EXCEPT
END;
Free();
end;
end;
вызов
nn:=count(mainbase,"select * from "+tablename);
претензии принимаются :)
Andriy Tysh (2003-10-13 10:22:00) [13]
"select count(*) as NCount from TableName"
{Выполняеш запрос и...}
Label1.Caption:=<Обьект, который делает запрос>.FieldByName("NCount").AsString;
Anatoly Podgoretsky (2003-10-13 07:39:00) [14]
Просто Label не получится, надо использовать Label.Caption
Tumcoat (2003-10-13 02:32:00) [15]
Ну можешь через dbgrid посмотреть, хотя Label, Edit и т.п., тоже не возбраняются.
Newman (2003-10-12 17:01:00) [16]
Хорошо select count(*) from table , а КАК вывести результат
(label1 использ-ть) ?????????????????
SER (2003-10-11 22:12:00) [17]
select count(*) from table
Johnmen (2003-10-11 18:20:00) [18]
>Zhouck © (11.10.03 17:31)
А если нет уникального идентификатора записи ? :)
Zhouck (2003-10-11 17:31:00) [19]
select count(id) from table, где
id - уникальный идентификатор записи
Vlad (2003-10-11 15:53:00) [20]>WithOut Any ... © (11.10.03 15:49) [1]
Ты уверен ?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1065707619&n=1