![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пересчет количества строк в таблице [D7, XP]
Uno-84 © (2008-03-28 09:16:00)Здравствуйте! Подскажите пожалуйста! Я делаю SQL запрос на пересчет количества строк в таблице, мне нужно полученное значение задать как параметр, каким образом это сделать вот код:
with DataModule1.IBQShared do begin
SQL.Clear;
SQL.Add('select count(MESSAGE_ID) from MESSAGE_EXT where MESSAGE_RECIPIENTS_NAMES = :MESSAGE_RECIPIENTS_NAMES');
ParamByName('MESSAGE_RECIPIENTS_NAMES').AsString := USER_NAME_TCS;
j := FieldByName('Count').AsInteger;
Open;
FildByName - не проходит.
Заранее спасибо!
Ega23 (2008-03-28 09:50:00) [1]
> FildByName - не проходит.
> Заранее спасибо!
В твоём случае можно сделать j:=Fileds[0].AsInteger;
Uno-84 (2008-03-28 09:43:00) [2]Спасибо большое! Помогло!
Sergey13 (2008-03-28 09:23:00) [3]> FildByName - не проходит.
Почему? Подходит прекрасно.
with DataModule1.IBQShared do begin
SQL.Text:='select count(MESSAGE_ID) as Field_Count from MESSAGE_EXT where MESSAGE_RECIPIENTS_NAMES = :MESSAGE_RECIPIENTS_NAMES';
ParamByName('MESSAGE_RECIPIENTS_NAMES').AsString := USER_NAME_TCS;
Open;
j := FieldByName('Field_Count').AsInteger;
1. Именование агрегатных полей желательно делать явно. As возможно лишнее - зависит от субд.
2. Сначала открыть датасет, потом прочитать значение.
Сергей М. (2008-03-28 09:23:00) [4]
> FildByName - не проходит.
Конечно не пройдет, count - это же не имя поля.
select count(MESSAGE_ID) RecCountfrom MESSAGE_EXT where ..
..
j := FieldByName(' RecCount').AsInteger
Matveih1 (2008-03-28 09:19:00) [5]Выполни сначала Open, а потом присваивай полученное значение переменной