Форум: "Базы";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизКол-во записей Найти похожие ветки
← →
Newman (2003-10-11 15:44) [0]Здравствуйте!
Как подсчитать кол-во записей в таблице?????????
Желательно с примером.
Спасибо Newman
← →
WithOut Any ... (2003-10-11 15:49) [1]Table.RecordCount
← →
Vlad (2003-10-11 15:53) [2]>WithOut Any ... © (11.10.03 15:49) [1]
Ты уверен ?
http://delphimaster.net/view/3-1065707619/
← →
Zhouck (2003-10-11 17:31) [3]select count(id) from table, где
id - уникальный идентификатор записи
← →
Johnmen (2003-10-11 18:20) [4]>Zhouck © (11.10.03 17:31)
А если нет уникального идентификатора записи ? :)
← →
SER (2003-10-11 22:12) [5]select count(*) from table
← →
Newman (2003-10-12 17:01) [6]Хорошо select count(*) from table , а КАК вывести результат
(label1 использ-ть) ?????????????????
← →
Tumcoat (2003-10-13 02:32) [7]Ну можешь через dbgrid посмотреть, хотя Label, Edit и т.п., тоже не возбраняются.
← →
Anatoly Podgoretsky (2003-10-13 07:39) [8]Просто Label не получится, надо использовать Label.Caption
← →
Andriy Tysh (2003-10-13 10:22) [9]
"select count(*) as NCount from TableName"
{Выполняеш запрос и...}
Label1.Caption:=<Обьект, который делает запрос>.FieldByName("NCount").AsString;
← →
Леван Варшанидзе (2003-10-13 10:33) [10]Функция
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);
претензии принимаются :)
← →
NAlexey (2003-10-13 11:31) [11]>претензии принимаются :)
Притензия:
1) При таком вызове:
nn:=count(mainbase,"select * from "+tablename);
Результат будет всегда равен 1.
← →
Vlad (2003-10-13 11:41) [12]>NAlexey © (13.10.03 11:31) [11]
Не всегда.
Во первых неясно какая все-таки СУБД.
Во вторых если речь идет о БДЕ, то там RecordCount будет зависеть от настроек BDE - алиаса.
← →
NAlexey (2003-10-13 11:41) [13]Тогда уж так:
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;
← →
Леван Варшанидзе (2003-10-13 11:56) [14]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.
← →
Карелин Артем (2003-10-13 12:04) [15]Леван Варшанидзе (13.10.03 11:56) [14]
В нормальных базах RecordCount выдает число фетченых записей, т.е. 1. Нужно вызывать методы типа FetchAll или Last для фетча всех записей, что в больших наборах данных приведет к большим затратам памяти или даже к зависанию.
← →
Леван варшанидзе (2003-10-13 12:35) [16]>Карелин Артем
Спасибо за информацию, но этот факт меня удивляет (если не сказать больше - убивает (или убывает ) :) )
а почему это так и где прочитать об этом поподробнее?
(ведь recordcount означает количество записей безо всякой оговорки, мол, сперва фетчите, а затем скажу, сколько у меня записей :)
← →
Anatoly Podgoretsky (2003-10-13 12:41) [17]Нет как раз с оговорками
Вот для 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:59) [18]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, а вожврашает оное тоько после посещения всех этих записей!
← →
Vlad (2003-10-13 13:11) [19]>Леван варшанидзе (13.10.03 12:59) [18]
Счастья в мире СУБД хватает ! :)))
← →
Anatoly Podgoretsky (2003-10-13 13:25) [20]RecordCount will only be 100 after all the records have been visited
Приведеная тобой цитата относится к этому, посещение всех записей может потребовать много времени для SQL таблиц (читай серверов).
← →
MsGuns (2003-10-13 13:26) [21]Исчерпывающе св-во RecordCount описан у дедушки датасетов - TClientDataSet. Особенно смысл его "неоднозначности" становится понятен, если исп-ся внешний провайдер.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c