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

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

Запрос - кол-во записей по условию [D6]


TAN_K ©   (2004-11-18 14:54:00) 

Господа , здравствуйте !
Работаю с IBQuery1 , необходимо вывести на экран кол-во записей удовлетворяющих какому-то условию (на экране - Label1) .
ожно написать запрос :
IBQuery1.SQL.Add('Select count(*) from VW_TABL where POLE = "200"');
Но как написать ,  Label1.Caption := кол-во , не знаю .
Господа , если кто-то знает , подскажите . Понимаю , что вопрос простой , но ....
Всем спасибо .


ЮЮ   (2004-11-19 03:47:00) [1]

Заведи другой IBQuery для подсчета количества или отключай DataSource y грида на период манипуляций с  IBQuery2, т.к. и результаты этих запросов тоже выводятся в Грмд, просто ты не успеваншь их увидеть

>List index ... [1]
В каком то обработчике, надеясь, что там уже запрос 'Select * from VW_Lkart' обращаешься к IBQuery2.Fields[1], а его нет, т.к. запрос 'Select count(*) from VW_Lkart where POL = "Ж"' возвражает только одно поле


HSolo   (2004-11-18 17:48:00) [2]

>Vemer ©   (18.11.04 17:38) [5]
Можно и так - если Вам в любом случае нужна вся выборка целиком. Но если речь идет только о количестве записей (а TAN_K спрашивает именно об этом) - то надо ли тянуть на клиента, быть может, тысячи и тысячи записей только ради того, чтобы сосчитать, сколько их? Пусть лучше сервер сосчитает и вернет одно-единственное число


Vemer   (2004-11-18 17:38:00) [3]

У меня так:
IbQuery.Open;
IbQuery.Fetchall;
Label.Caption := 'Кол-во записей: ' + IntToStr (IbQuery.RecordCount);


HSolo   (2004-11-18 17:22:00) [4]

А что, собственно, должно отображаться в гриде?


TAN_K   (2004-11-18 16:37:00) [5]

Спасибо за помощь . Написала такой код :
//  подсчет  общего кол-ва записей
 IBQuery2.Close;
 IBQuery2.SQL.Clear;
 IBQuery2.SQL.Add('Select count(*) from VW_Lkart');
 IBQuery2.Open;
 Label1.Caption := 'Кол-во работников = ' + inttostr(DataModule1.IBQuery2.Fields[0].AsInteger);  
// подсчет  кол-ва записей для ....
 IBQuery2.Close;
 IBQuery2.SQL.Clear;
 IBQuery2.SQL.Add('Select count(*) from VW_Lkart where POL = "М"');
 IBQuery2.Open;
 Label2.Caption := 'Кол-во мужчин = ' + inttostr(DataModule1.IBQuery2.Fields[0].AsInteger);  
// подсчет кол-ва записей для ....
 IBQuery2.Close;
 IBQuerySQL.Clear;
 IBQuery2.SQL.Add('Select count(*) from VW_Lkart where POL = "Ж"');
 DataModule1.IBQuery2.Open;
 Label21.Caption := 'Кол-во женщин = ' + inttostr(IBQuery2.Fields[0].AsInteger);    
//
//  Запрос , кторый должен отображаться в Grid
 IBQuery2.Close;
 IBQuery2.SQL.Clear;
 IBQuery2.SQL.Add('Select * from VW_Lkart');
 IBQuery2.SQL.Add('Order by FAM,IM,OT');
 IBQuery2.Open;

Кол-во записей прекрасно подсчитывается и показывается на экране в Label1 - 3 , но перед отображением  GRID выдает сообщение об ошибке - List index ... [1] и на экране отображает только одно поле , которое было отведено под COUNT(*) , но оно пусто , а все поля не отображаются .
Какую еще мелочь я не учла ?
Всем спасибо .


HSolo   (2004-11-18 15:16:00) [6]

Или так:
Label1.Caption := IntToStr(IBQuery1.Fields[0].AsInteger);


HSolo   (2004-11-18 15:14:00) [7]

Например, так:
Label1.Caption := IBQuery1.Fields[0].AsString;


Наверх

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