Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

определение количества уникальных записей

2.1K
17 июля 2007 года
FreeWay
142 / / 03.05.2007
Всем привет!!
Такая задача:
У меня есть фаил базы данных FoxPro - file.dbf
в нем есть поле счет, допустим:
2620
2620
2621
2620
2621
2623
2623
мне надо найти колличество уникальных (неповторяющихся)счетов, тоесть прога должна выдать - 3, так как всего 3 вида счета
пытался делать так:
схемма приблизительная (может че другое посоветуете)

while (!Table->Eof)
{

if (Table1->fieldByName ("schet")==Memo->lines) //сдесь не понятно как сравнивать с каждой существующей записью в Memo
{
Table1->Next();
}
else
{
Memo->lines=Table1->fieldByName ("schet");
Table1->Next();
}
}
далее количество строк в Memo соответствует количеству уникальных счетов.
305
18 июля 2007 года
Kashuk
385 / / 21.02.2003
Цитата: FreeWay
Всем привет!!
Такая задача:
У меня есть фаил базы данных FoxPro - file.dbf
в нем есть поле счет, допустим:
2620
2620
2621
2620
2621
2623
2623
мне надо найти колличество уникальных (неповторяющихся)счетов, тоесть прога должна выдать - 3, так как всего 3 вида счета
пытался делать так:
схемма приблизительная (может че другое посоветуете)

while (!Table->Eof)
{

if (Table1->fieldByName ("schet")==Memo->lines) //сдесь не понятно как сравнивать с каждой существующей записью в Memo
{
Table1->Next();
}
else
{
Memo->lines=Table1->fieldByName ("schet");
Table1->Next();
}
}
далее количество строк в Memo соответствует количеству уникальных счетов.



Сделай запрос, в запросе сгруппируй это поле, и готово...

2.1K
18 июля 2007 года
FreeWay
142 / / 03.05.2007
Цитата: Kashuk
Сделай запрос, в запросе сгруппируй это поле, и готово...



запрос мне не подходит, в этом файле куча другой фигни, которая сортируется и отберается по многим параметрам с помощью фильтров, вот осталось последний штрих...

305
18 июля 2007 года
Kashuk
385 / / 21.02.2003
Цитата: FreeWay
запрос мне не подходит, в этом файле куча другой фигни, которая сортируется и отберается по многим параметрам с помощью фильтров, вот осталось последний штрих...



Я так понял, что тебе нужно узнать чисто количество, так?

Кинь на форму Query его привяжи к файлу(dbf), и сделай выборку с группировкой, оно тебе от группирует, вытягиваешь Count по этому полю, и готово.
Пару минут роботы, мне кажется проще не получится, да и намного быстрее чем цыкли…

7.8K
18 июля 2007 года
Tingo
201 / / 17.05.2007
SELECT COUNT( DISTINCT (
`счет`
) )
FROM `mytable`

и нет проблем
2.1K
23 июля 2007 года
FreeWay
142 / / 03.05.2007
Цитата: Tingo
SELECT COUNT( DISTINCT (
`счет`
) )
FROM `mytable`

и нет проблем



пробовал вот так:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("Select count (distinct rs_vklad)");
Query1->SQL->Add("From svod_all.dbf");
Query1->Open();
int iKolZap=Query1->RecordCount;
Label8->Caption=iKolZap;
Query1->Close();

и в сам компонент прописывать:

Select count(distinct rs_vklad)
From "svod_all.dbf"

но в любом случае выдает 1, не пойму почему (((((

2.1K
24 июля 2007 года
FreeWay
142 / / 03.05.2007
зашибись, работает, я пользуюсь фильтрами, я так понял надо чем то одним пользоваться либо фильтрами. либо запросом, потому что если я фильтрую базу, по одному предприятию и запускаю запрос //Query1->SQL->Text = "Select distinct rs_vklad From svod_all.dbf";// - то он выдает все счета (((
а если написать запрос так: Query1->SQL->Text= "Select distinct rs_vklad From svod_all.dbf where kod_otd='102' and vid_prg='ZP'"; - то он работает. Правильно ли я думаю - что запрос с фильтром не работает? Или тут какой то подводный камень?
10
24 июля 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: FreeWay
Правильно ли я думаю - что запрос с фильтром не работает?


Работает, просто фильтрация происходит уже после выполнения запроса.

Цитата: FreeWay
Или тут какой то подводный камень?


Фильтры предназначены для простых действий, работают локально, что снижает нагрузку на сервер, но тормозят с большим объёмом записей. Выборка уникальных записей однозначно должна делаться запросом.

2.1K
24 июля 2007 года
FreeWay
142 / / 03.05.2007
Цитата: Freeman
Работает, просто фильтрация происходит уже после выполнения запроса.


Фильтры предназначены для простых действий, работают локально, что снижает нагрузку на сервер, но тормозят с большим объёмом записей. Выборка уникальных записей однозначно должна делаться запросом.



тоесьт схемма запрос, фильтр - работает, а схемма фильтр запрос - не работает?
я ведь сначало фильтрую а потом уже применяю запрос.
Может ли запрос сделать все то что делают фильтры? Можно от их использования отказаться?

92
24 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
перечитай сообщение Freeman'а :) это ответ на твои вопросы :)
Цитата: Freeman
Работает, просто фильтрация происходит уже после выполнения запроса.

Фильтры предназначены для простых действий, работают локально, что снижает нагрузку на сервер, но тормозят с большим объёмом записей. Выборка уникальных записей однозначно должна делаться запросом.

2.1K
24 июля 2007 года
FreeWay
142 / / 03.05.2007
Query1->SQL->Add("Select distinct rs_vklad");
Query1->SQL->Add("From svod_all.dbf");
Query1->SQL->Add("Where vid_prg='ZP' and open and kod_otd='"+Edit2->Text+"'");
Query1->Open();
int iKolZap=Query1->RecordCount;
Label8->Caption=iKolZap;
Query1->Close();


Всем спасибо, все работает, по вышенаписанным методам, ухитрился мспользовать и фильтр и запрос паралельно.
Темма закрыта!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог