Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Интересное поведение RECCOUNT / 7 сообщений из 7, страница 1 из 1
04.05.2007, 16:20
    #34505679
dmitryx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересное поведение RECCOUNT
В своей последней заметке Тод Маккена описывает своеобразное поведение функции RECCOUNT() при наличие индекса и определенной установке SET DELETED.
This issue has nothing to do with the RECCOUNT/_TALLY results we all know about regarding deleted records (RECCOUNT always returns the number of rows in the table regardless of the SET DELETED setting). No, this issue has something to do with an index and the current setting of DELETED. When an index is set on a column involved in a WHERE clause of an SQL statement, RECCOUNT will return the total number of records from the 'FROM' table instead of the results from the cursor when SET DELETED is OFF! It seems as though the resulting cursor has a bunch of deleted records (the scrollbar in the browse window only goes half-way up (if you know what I mean)), but they can't be accessed regardless of the SET DELETED setting.
Подробности выше по ссылке.
...
Рейтинг: 0 / 0
04.05.2007, 16:26
    #34505696
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересное поведение RECCOUNT
Немного непонятно в чем тут проблема? Это давно известный bug и Sergey Berezniker все подробно еще раз объяснил этому товарищу, как на самом деле в FoxPro все это происходит...

Для серьезных целей никогда не рекомендовалось использовать _TALLY and RECCOUNT()...
...
Рейтинг: 0 / 0
04.05.2007, 16:50
    #34505790
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересное поведение RECCOUNT
_TALLY - это смотря где использовать.
После SELECT-а, чтобы узнать, сколько записей попало в выброку - просто милое дело!
________
Не дадим распространиться заразе политкорректности!
...
Рейтинг: 0 / 0
04.05.2007, 17:36
    #34505915
dmitryx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересное поведение RECCOUNT
Sergey Ch , а с _TALLY что не так?
...
Рейтинг: 0 / 0
04.05.2007, 18:39
    #34506072
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересное поведение RECCOUNT
dmitryx Sergey Ch , а с _TALLY что не так?
Как сказано в приведенной Вами статье - положиться на эти цифры нельзя...

Но как верно заметил Urri, для не ответсвенных случаев вполне "сгодится"
...
Рейтинг: 0 / 0
04.05.2007, 19:51
    #34506192
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересное поведение RECCOUNT
Это не BUG. Это фича. Очень давно известная. Еще с FP2.x Даже частично отраженная в документации.

Если выражение Select-SQL полностью оптимизируемое (в данном при случае SET DELETED OFF), то FoxPro не создает новый курсор, а переоткрывает таблицу-источник с наложенным на нее фильтром.

Разумеется, Recount() вернет количество записей в таблице-источнике. Ведь это она и есть.

Причем, курсор, полученный после такой выборки нельзя использовать как источник данных для других команд Select-SQL. Будет ошибка 1815.

Решение очевидное - сделать запрос не полностью оптимизируемым (в данном случае SET DELETED ON) или же использовать специальную опцию NOFILTER.

И вообще, меньше надо всяких блоггеров читать . Лучше сделать поиск по форуму на предмет того, а не встречалось ли подобное раньше?
...
Рейтинг: 0 / 0
05.05.2007, 10:13
    #34506607
dmitryx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересное поведение RECCOUNT
ВладимирМ, спасибо за разъяснение. Конечно же я искал по форуму, нашел одну тему близкую по контексту, но мне показлось, что лучше сделать отдельный топик. Надеюсь на ваше снисхождение :)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Интересное поведение RECCOUNT / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]