powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Интересное поведение RECCOUNT
7 сообщений из 7, страница 1 из 1
Интересное поведение RECCOUNT
    #34505679
dmitryx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В своей последней заметке Тод Маккена описывает своеобразное поведение функции 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
Интересное поведение RECCOUNT
    #34505696
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного непонятно в чем тут проблема? Это давно известный bug и Sergey Berezniker все подробно еще раз объяснил этому товарищу, как на самом деле в FoxPro все это происходит...

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

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

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

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

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

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

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


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