![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RecordCount и все, что с ним связано
И. Павел © (2010-07-13 10:41:00)Здравствуйте.
Уже давно встречаю в сети (да и в справке это есть) информацию о том, что RecordCount может содержать не число строк выборки, а -1 или другое значение.
В связи с этим у меня возникла пара вопросов:
1. Подскажите, пожалуйста, метод IsEmpty (для ADO, BDE, IB и т.д.) всегда будет работать правильно?
2. В редких случаях требуется все же узнать именно число строк в выборке, а не то, что она пустая/полная. Как лучше поступать в таких случаях? Есть что-нибудь быстрее FetchAll, но такое же удобное? Для Select count(*) нужны блокировки, думаю, это себя не оправдает, т.к. если выборка сложная, придется блокировать 10-20 таблиц – уж лучше подождать с фичем. А без блокировок можно получить актуальный count, а не тот, который относится к моей выборке. Может все же RecordCount не работает только при определенных условиях? Например, я замечал это при CursorLoaction = server. Если да, то при каких?
Заранее спасибо.
12 (2010-07-13 11:13:00) [21]ну если так хочется можно написать
select count(*)[, 0, 0, '',]
from T
where a>b
union
select f1 [,f2, f3, f4]
from T
where a>b
И. Павел (2010-07-13 10:57:00) [22]> число строк в таблицах может измениться всегда
Насколько я понимаю, при выборке, создается временная таблица, содержащая результат. Если RecordCount работает правильно, то он возвращает именно число строк этой таблицы. А если написать SELECT count(*), то эта операция будет работать уже с общими таблицами, а они могли измениться. Хотя, может быть, я ошибаюсь.
12 (2010-07-13 10:50:00) [23]> [2] И. Павел © (13.07.10 10:48)
> > вряд ли
>
> Ну например между выборкой и определением числа строк этой
> выборки, число строк в таблицах могло измениться. Вот и
> выйдет путанница.
число строк в таблицах может измениться всегда
И. Павел (2010-07-13 10:48:00) [24]> вряд ли
Ну например между выборкой и определением числа строк этой выборки, число строк в таблицах могло измениться. Вот и выйдет путанница.
12 (2010-07-13 10:42:00) [25]> Для Select count(*) нужны блокировки
вряд ли