![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кол-во записей, где некое поле 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"