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

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

Как узнать кол-во записей в результате SQL-запроса? [D7, XP]


cvg ©   (2007-01-26 11:57:00) 

Запрос типа TSQLQuery должен вернуть либо одну запись, либо вообще ни одной. Какой функцией можно узнать количество записей в результате?


zdm   (2007-01-26 14:58:00) [1]


> Sergey13 ©   (26.01.07 14:54) [18]

В этой жизни ни в чем нельзя быть уверенным :) Тогда автору было бы логично привести запрос.


Sergey13   (2007-01-26 14:54:00) [2]

> [17] zdm ©   (26.01.07 14:48)

Ты уверен? Запрос видел? Я вот думал, что у него select sum() from table.


zdm   (2007-01-26 14:48:00) [3]


> alex_*** ©   (26.01.07 14:42) [14]

А count чего? Ему же сначало надо что -то вернуть и уже к этому делать count


Sergey13   (2007-01-26 14:45:00) [4]

Блин, не на то нажал. сори
> [12] cvg   (26.01.07 14:30)

Если у тебя запрос без использования агрегатов (что я предполагал), то зря ты сильно надеешься, что

> Запрос типа TSQLQuery должен вернуть либо одну запись, либо вообще ни одной

Он с успехом может вернуть и 10000 - это как карты лягут.


Sergey13   (2007-01-26 14:43:00) [5]

> [12] cvg   (26.01.07 14:30)

Если у тебя запрос без использования агрегатов, то зря ты утверждаешь, что


alex_***   (2007-01-26 14:42:00) [6]


> И если использовать count , то тут же SQL потребует группировки

кто это потребует группировки?
select count(*) from q_opportunities - какая тут группировка?


zdm   (2007-01-26 14:35:00) [7]


> cvg   (26.01.07 14:30) [12]

Значение поля =0 и неудовлетворяющее запросу(Null) --это разные вещи.


cvg   (2007-01-26 14:30:00) [8]

Можно и переделать, но я уже убедился, что Eof у меня вполне работает. Кстати, с count'ом не очень интересно, потому что если есть одна строка, мне интересно выводить значение одного из полей (которое может быть и нулевым); если же не выдано ни одной строки, то функция вернет -1.


zdm   (2007-01-26 14:24:00) [9]


> Sergey13 ©   (26.01.07 14:13) [10]

Интересно, как можно гарантировать возвращение "хоть одной записи"? И если использовать count , то тут же SQL потребует группировки, а её понятное дело быть не может.
Если совсем до извращения дойти, можно создать Вьюху на основе запроса, а потом уже count к Вьюхе, а после операций смерть ей. Да уж, мазахизм полнейший :)


Sergey13   (2007-01-26 14:13:00) [10]

> [0] cvg   (26.01.07 11:57)

Можно еще попробовать переделать запрос так, что бы он гарантировано выдавал 1 строку. Например используя count в запросе.


zdm   (2007-01-26 13:31:00) [11]


> Desdechado ©   (26.01.07 13:28) [7]


-Армяне лучше чем грузины!
-Чем?
-Чем грузины.


Плохиш   (2007-01-26 13:31:00) [12]


> alex_*** ©   (26.01.07 13:06) [5]

У автора ещё хуже, у него обращение к RecordCount вообще исключение может вызвать ;-) а ж в трёх, документированных, случаях.


Desdechado   (2007-01-26 13:28:00) [13]

> if field[0].asstring='' then ни чего не вернулось :))
чудак-человек

[1].1 - самое правильное


zdm   (2007-01-26 13:19:00) [14]

if field[0].asstring='' then ни чего не вернулось :))


alex_***   (2007-01-26 13:06:00) [15]


>
> А "RecordCount = -1" как интерпретировать?
>

Это где такое есть? Видел RecNo = -1. Как-то работал с dbf через odbc, когда запсией было около 1М, то RecordCount задумывался на полминуты. Так что

> Eof = true - ни одной записи.
> Eof = false - хотя бы одна запись есть.

Было бы практичнее, я думаю


Плохиш   (2007-01-26 12:10:00) [16]


> alex_*** ©   (26.01.07 12:05) [3]

А "RecordCount = -1" как интерпретировать?


alex_***   (2007-01-26 12:05:00) [17]

да просто на RecordCount>0 проверить


Плохиш   (2007-01-26 12:02:00) [18]


> Запрос типа TSQLQuery должен вернуть либо одну запись, либо
> вообще ни одной

после открытия
Eof = true - ни одной записи.
Eof = false - хотя бы одна запись есть.


Sergey13   (2007-01-26 12:01:00) [19]

1. IsEmpty
2. Last+RecordCount (не всегда и не везде работает)
3. Цикл


Наверх

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