Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кол-во записей, где некое поле P ;= a or b or c ? ;Filtre ? [D5, Access]


Chery ©   (2003-07-03 11:51:00) 

Есть таблица с большим кол-вом записей. Нужно подсчитать общее кол-во записей, где некое поле "P" принимает значения "а", "б", "в". Причём это надо сделать не на сервере, а на клиенте (без SQL). Обязательно ли лопатить всю таблицу While и проверять IF, потом i:=i+1? Или лучше Filtred фильтром Accept = ..., а потом RecordCount, а потом закрыть фильтр ?
А методы FindKey, Located - ищут вроде только одну запись (первую попавшуюся). ?? И как пользоваться Filtre ?
Пишу P="a*" - ничего не происходит.


Anatoly Podgoretsky   (2003-07-03 14:01:00) [1]

{bas} © (03.07.03 13:58)
А ты сначала найди его


{bas}   (2003-07-03 13:58:00) [2]

А почему нельзя это сделать на сервере?? НЕ понимаю..
В Отдельном запросе делаешь, как сказали, и все будет ок!


Chery   (2003-07-03 12:49:00) [3]

Ладно, сделал так:
в инспекторе ClientDataSet задал
Filter - Name = "а*" or Name = "в*" or Name = "б*"
IndexFieldNames - Name
В коде:
tblDiscipliny.Filtered:=True;
rc:=tblDiscipliny.RecordCount;
tblDiscipliny.Filtered:=False;

Да, в качестве СУБД на сервере - Access. Сам знаю, такого нарочно не придумаешь, но знаете, есть ряд преимуществ, если ПО не требует излишней защищённости и кол-во записей не достигает астрономических цифр.


Johnmen   (2003-07-03 12:41:00) [4]

>Соловьев © (03.07.03 12:20)

:-)))

>Chery

Если используется BDE, то с помощью фильтров теоретически может получиться быстрее, чем прямое сканирование...
Но я бы это проверил.


Соловьев   (2003-07-03 12:22:00) [5]


> Я же ясно написал: Без SQL, не на серверной, а на клиентской
> части.

сервер -Access? :)))
Ну тогда цыкл While ...


Соловьев   (2003-07-03 12:20:00) [6]


> SELECT P,COUNT(*) FROM Table
> GROUP BY P
> WHERE P IN ("а","б,"в")


SELECT P,COUNT(*)
FROM Table
WHERE P IN ("а","б,"в")
GROUP BY P



Chery   (2003-07-03 12:18:00) [7]

Я же ясно написал: Без SQL, не на серверной, а на клиентской части. Пока я остановился на
tblDiscipliny.Filter:= Name = "фар*" or Name = "дар*"
tblDiscipliny.Filtered:=True;
Вроде разобрался с Filter.


Johnmen   (2003-07-03 12:11:00) [8]

На каком сервере ? :)))))))

SELECT P,COUNT(*) FROM Table
GROUP BY P
WHERE P IN ("а","б,"в")


Соловьев   (2003-07-03 12:03:00) [9]

select count(P)
from table
where P="a"


Наверх

Титульная страница Поиск, карта сайта Написать письмо