|
|
|
Интересное поведение RECCOUNT
|
|||
|---|---|---|---|
|
#18+
В своей последней заметке Тод Маккена описывает своеобразное поведение функции 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. Подробности выше по ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 16:20 |
|
||
|
Интересное поведение RECCOUNT
|
|||
|---|---|---|---|
|
#18+
Немного непонятно в чем тут проблема? Это давно известный bug и Sergey Berezniker все подробно еще раз объяснил этому товарищу, как на самом деле в FoxPro все это происходит... Для серьезных целей никогда не рекомендовалось использовать _TALLY and RECCOUNT()... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 16:26 |
|
||
|
Интересное поведение RECCOUNT
|
|||
|---|---|---|---|
|
#18+
_TALLY - это смотря где использовать. После SELECT-а, чтобы узнать, сколько записей попало в выброку - просто милое дело! ________ Не дадим распространиться заразе политкорректности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 16:50 |
|
||
|
Интересное поведение RECCOUNT
|
|||
|---|---|---|---|
|
#18+
Sergey Ch , а с _TALLY что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 17:36 |
|
||
|
Интересное поведение RECCOUNT
|
|||
|---|---|---|---|
|
#18+
dmitryx Sergey Ch , а с _TALLY что не так? Как сказано в приведенной Вами статье - положиться на эти цифры нельзя... Но как верно заметил Urri, для не ответсвенных случаев вполне "сгодится" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 18:39 |
|
||
|
Интересное поведение RECCOUNT
|
|||
|---|---|---|---|
|
#18+
Это не BUG. Это фича. Очень давно известная. Еще с FP2.x Даже частично отраженная в документации. Если выражение Select-SQL полностью оптимизируемое (в данном при случае SET DELETED OFF), то FoxPro не создает новый курсор, а переоткрывает таблицу-источник с наложенным на нее фильтром. Разумеется, Recount() вернет количество записей в таблице-источнике. Ведь это она и есть. Причем, курсор, полученный после такой выборки нельзя использовать как источник данных для других команд Select-SQL. Будет ошибка 1815. Решение очевидное - сделать запрос не полностью оптимизируемым (в данном случае SET DELETED ON) или же использовать специальную опцию NOFILTER. И вообще, меньше надо всяких блоггеров читать . Лучше сделать поиск по форуму на предмет того, а не встречалось ли подобное раньше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 19:51 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=200&tid=1589399]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 310ms |

| 0 / 0 |
