Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Чётность.


Автор: Fast 23.10.2006, 18:44
Как мне узнать число записей в таблице чётное или нечётное ???

Автор: Vas 24.10.2006, 07:03
Код

Result:=odd(TQuery.RecordCount); //если True значит нечетное число, иначе четное, можно также использовать EVEN (работает с точностью наоборот)

Автор: Akella 24.10.2006, 10:38
сначалу нужно сделать FetchAll

Добавлено @ 10:39 
а то получишь число записей (например 200) в кэше "ответа", а не фактическое, хранящееся на сервере.

Автор: SergeBS 24.10.2006, 11:14
Akella
Vas
Нельзя так. Из-за 1 цифры тащить на клиента всю таблицу - нехорошо. Поэтому правильно:
запросом SQL получить на клиента цифирку=количеству записей, а потом определить: чет или нечет. А еще есть TDataSet.RecordCount.

Автор: Akella 24.10.2006, 11:29
SergeBS, можно по всякому. А если у него уже  датасет открыт и нужно просто получить кол-во записей....

тогда вот ещё вариант:
Код

Query.close;
Query.sql.clear;
Query.sql.add('select count(*) from MyTable');
Query.open;
Result:=odd(Query.Fields[0].Value);
Query.close;


Автор: SergeBS 24.10.2006, 12:24
Akella,
smile. А я что проедлагал? 
Цитата

А если у него уже  датасет открыт и нужно просто получить кол-во записей....

есть TDataSet.RecordCount.

А запрос ты за меня написал smile. Но с ошибкой. Не
Код

Result:=odd(Query.Fields[0].Value);

а
Код

Result:=odd(Query.Fields[0].AsInteger);


Автор: Akella 24.10.2006, 12:29
Цитата(SergeBS @  24.10.2006,  12:24 Найти цитируемый пост)
Но с ошибкой. Не

это не ошибка, проверь сам

Автор: SergeBS 24.10.2006, 14:27
Akella
Проверил. Не ошибка. Ты прав. Зато AsInteger в списке подсказок ближе smile.

Автор: Akella 24.10.2006, 14:39
ну блин, да о чём спорим, это ж мелочи  smile  можно сказать...

Добавлено @ 14:41 
тогда уж лучше так
Код

Var
 v:variant;
begin
...
Query.close;
Query.sql.clear;
Query.sql.add('select count(*) from MyTable');
Query.open;
v := Query.Fields[0].Value;
Query.close;
If (VarIsNull(v)) or (V = 0 )then
  Result :=0 
else
  Result:=odd(v);



Добавлено @ 14:42 
а перед всем этим можно и наличие таблицы проверить smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)