![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как присвоить результат запроса select count (*) from mytable? [D7, IB6.x]
Sanya_BBB © (2006-10-09 16:20:00)Как присвоить переменной результат запроса select count (*) from mytable?
Desdechado (2006-10-09 22:24:00) [1]> Насколько я знаю что функция COUNT возвращает ЧИСЛО выбранных рядов в результате запроса.
Ничего подобного. Функция COUNT возвращает количество строк, удовлетворяющих ограничениямв запросе. А не число строк, вернувшихся из другого запроса.
Потому как SELECT Count(*) ... - это тоже запрос, запрос к серверу, а не к результату выборки.
Поэтому если тебе нужно количество, пишешь один запрос. Если тебе нужны сами записи, пишешь другой запрос.
Короче, учи SQL, тогда не будет никаких "Насколько я знаю".
Виталий Панасенко (2006-10-09 21:55:00) [2]См.
> Desdechado © (09.10.06 16:21) [1]
ТОлько ОБЯЗАТЕЛЬНО в текст datamodule2.IBQueryipwork.SQL.Text впиши текст запроса из твоего вопроса (Каламбур, блин!)
Zacho (2006-10-09 21:54:00) [3]Сделать это очень просто: выполнить запрос select count (*) from mytable
У тебя же явно выполняется какой-то другойзапрос.
Поэтому я тебя и прошу: приведи здесь текст запроса. Не какой-то абстрактный, а реальный, из твоей программы.
Sanya_BBB (2006-10-09 21:44:00) [4]> Zacho © (09.10.06 21:38) [14]
Так мне и ненадо никаких ID. Насколько я знаю что функция COUNT возвращает ЧИСЛО выбранных рядов в результате запроса. То есть она возвращает количество записей выбранных по запросу. Вот именно это цифру (количество записей) мне и нужно получить и присвоить переменной через запрос select count (*) from mytable. Только я никак не пойму как это сделать.
Zacho (2006-10-09 21:38:00) [5]Ну в конце концов приведи точный текст своего запроса, ибо запрос select count (*) from mytable никаких ID (а так же других полей) возвращать не может по определению.
Sanya_BBB (2006-10-09 21:32:00) [6]Zacho © (09.10.06 21:20) [12]
>Fields[0]
Query.filelds[0] - у меня автоинкрементное поле (ID)
Query.fields[1] - у меня поле ФИО.
И если я пишу query.Fields[1].AsString то результат у меня не количество записей в таблице а "ИВАНОВ". Я вообще не понимаю при чем сдесь этот метод. Мне нужно сделать как в Table1.RecordCount только у компонента Query через запрос select count.
Zacho (2006-10-09 21:20:00) [7]Так возьми вместо 0 подставь индекс нужного тебе поля, или см. [8]
Кстати, запрос который ты приводишь select count (*) from mytable никак не может возвращать ID, просто потому что никакое ID в нём не выбирается, и в случае именно с этим запросом Fields[0] и будет нужным тебе полем.
Sanya_BBB (2006-10-09 21:15:00) [8]Скорей всего мы недопонимаем друг друга.
мне нужно через Query : запросом select count (*) from mytable получить число(количестыо записей), и присвоить их переменной. Но я не понимаю причем сдесь этот способ: x:=query.Fields[0].AsInteger; который возвращает значение нулевого поля, выделенной записи.
Desdechado (2006-10-09 20:18:00) [9]Странный у тебя каток, катится не туда.
Может, рулевого сменить?
Sanya_BBB (2006-10-09 20:16:00) [10]TO ALL
да не катит такой способ
a:=datamodule2.IBQueryipwork.Fields[0].AsInteger
он выдает значение поля ID, это равносильно что написать так:
a:=datamodule2.ibqueryipworkID.Asinteger;
zorik (2006-10-09 17:24:00) [11]select count (*) nfrom mytable
a := FieldByName('n').Value
saxon (2006-10-09 17:20:00) [12]
> Sergey13 © (09.10.06 16:47) [5]
+
count = 1 & Id #1 = 1 :)
Rule (2006-10-09 17:18:00) [13]Sergey13 © (09.10.06 16:47) [5]
адназначна
Sergey13 (2006-10-09 16:47:00) [14]> [4] Sanya_BBB (09.10.06 16:43)
Значит запрос у тебя не
> select count (*) from mytable
Sanya_BBB (2006-10-09 16:43:00) [15]Делааю так и мне выдает значение поля ID
datamodule2.IBQueryipwork.Fields[0].AsInteger
Desdechado (2006-10-09 16:31:00) [16]query - компонент для запроса
Sanya_BBB (2006-10-09 16:22:00) [17]Что то не совсем понял...
Desdechado (2006-10-09 16:21:00) [18]x:=query.Fields[0].AsInteger;