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