Автор | Сообщение |
|
| |
Пост N: 6152
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.16 23:13. Заголовок: Scope + Descend
Что то я потерялся наверное или лыжи не едут.... Имеем индекс с таким ключем index on str(nomer,6)+descend(dtos(data_z)) to tmpnmn1 Пытаюсь поставить SCOPE dth8:=Date()-1 nmr:=nomen->nomer scp:= str(nmr,6)+dtos(dth8-45) scp1:= str(nmr,6)+dtos(dth8) karta->(dbseek(scp1,.t.)) if !karta->(eof()_ karta->(dbOrderInfo(DBOI_SCOPETOP,,,scp1)) karta->(dbOrderInfo(DBOI_SCOPEBOTTOM,,,scp)) do while !karta->(eof()) . . . Результат пишу в файл и в нем оказывается аж август месяц. Если без Descend то все нормально.
|
|
|
Ответов - 18
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1331
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.16 23:25. Заголовок: Dima Descend в свои..
Dima Descend в свои выражения включи (csp, csp1)
|
|
|
|
| |
Пост N: 6153
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.16 23:34. Заголовок: SergKis пишет: Desc..
SergKis пишет: цитата: | Descend в свои выражения включи (csp, csp1) |
| Если бы все так было просто... уже играл с этим , не пашет Я про это scp:= str(nmr,6)+descend(dtos(dth8-45)) scp1:= str(nmr,6)+descend(dtos(dth8))
|
|
|
|
| постоянный участник
|
Пост N: 1332
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.16 23:41. Заголовок: ты, случайно top и t..
ты, случайно top и tom местами не путаешь, т.е. scp и scp1
|
|
|
|
| |
Пост N: 6154
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.16 23:45. Заголовок: SergKis Тоже была т..
SergKis Тоже была такая мысль , попробовал и результат такой же ЗЫ Убираю Descend и все в шоколаде , не понятно почему...... Меняя при этом scp и scp1 , верхний с меньшими значениями. Если с Descend то наоборот , хотя игрался и без такого вмешательства. До лампочки...
|
|
|
|
| постоянный участник
|
Пост N: 1333
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.16 23:58. Заголовок: Dima по виду dth8-4..
Dima по виду dth8-45 < dth8, а str(...) одинаковая ... подсвети вывод значения ключа, бывает, если в выражениях что то не так - вся база лезет и не поймешь сразу этого
|
|
|
|
| |
Пост N: 6155
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 00:00. Заголовок: Да str одинаковая..
Да str одинаковая
|
|
|
|
| |
Пост N: 6156
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 00:01. Заголовок: Сделаю тестик завтра..
Сделаю тестик завтра простой и выложу
|
|
|
|
| постоянный участник
|
Пост N: 1334
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.11.16 00:07. Заголовок: Dima Descend можно ..
Dima Descend можно взять от даты, потом преобразования
|
|
|
|
| Администратор
|
Пост N: 3505
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.11.16 08:11. Заголовок: Должно работать Откр..
Должно работать Открыл через dbedit большой файл с полем Date, D, 8, 0 Создал индекс по выражению Descend(DTOS(Date)) Поставил scope: top: Descend("20160301") bottom: Descend("20160101") диапазон установился так, как ему и положено: сначала даты от 01.03.16, и так далее до 01.01.16
|
|
|
|
| Администратор
|
Пост N: 3506
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.11.16 08:24. Заголовок: Если scope нужен для..
Если scope нужен для цикла, то scopetop можно не устанавливать. Я делаю так: dbOrderInfo(DBOI_SCOPEBOTTOM,,, <exp2>) dbSeek(<exp1>, .t.) while ! eof() ... enddo dbOrderInfo(DBOI_SCOPEBOTTOMCLEAR)
|
|
|
|
| |
Пост N: 6157
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 08:34. Заголовок: Pasha пишет: Создал..
Pasha пишет: цитата: | Создал индекс по выражению Descend(DTOS(Date)) |
| А если впереди прицепить STR() по какому то полю
|
|
|
|
|
| Администратор
|
Пост N: 3507
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.11.16 08:49. Заголовок: Разницы не будет, эт..
Разницы не будет, это же константа для цикла получается. Есть еще такой момент: soft seek надо делать после установки scopebottom
|
|
|
|
| |
Пост N: 6158
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 09:04. Заголовок: Pasha пишет: Есть е..
Pasha пишет: цитата: | Есть еще такой момент: soft seek надо делать после установки scopebottom |
| Кажется заработало Сделал так karta->(dbOrderInfo(DBOI_SCOPEBOTTOM,,,scp1)) karta->(dbseek(scp,.t.)) if !karta->(eof()) Паш спасибо !!!
|
|
|
|
| |
Пост N: 6159
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 09:21. Заголовок: Pasha А такой вопро..
Pasha А такой вопрос по SCOPE Если Seek НЕ Soft , то такая конструкция будет же работать и после ScopeBottom , Seek повторно делать не надо ? if dbseek(user_kod) dbOrderInfo(DBOI_SCOPETOP,,,user_kod) dbOrderInfo(DBOI_SCOPEBOTTOM,,,user_kod) do while !eof() // обработка Ведь в теории Scope не перемещает указатель записи а просто ограничивает область видимости индекса
|
|
|
|
| Администратор
|
Пост N: 3508
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.11.16 10:18. Заголовок: Так и есть. Даже есл..
Так и есть. Даже если текущая запись выходит за пределы scope, она останется текущей после его установки
|
|
|
|
| |
Пост N: 6160
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 10:26. Заголовок: Pasha Тогда я не со..
Pasha Тогда я не совсем понял , почему при таком подходе получил косяк. Dima пишет: цитата: | dth8:=Date()-1 nmr:=nomen->nomer scp:= str(nmr,6)+descend(dtos(dth8-45)) scp1:= str(nmr,6)+descend(dtos(dth8)) karta->(dbseek(scp1,.t.)) if !karta->(eof()) karta->(dbOrderInfo(DBOI_SCOPETOP,,,scp1)) karta->(dbOrderInfo(DBOI_SCOPEBOTTOM,,,scp)) do while !karta->(eof()) |
| А ежели после DBOI_SCOPEBOTTOM сделать дополнительный karta->(dbseek(scp1,.t.)) то все будет нормально. PS забыл Descend прицепить , поправил
|
|
|
|
| Администратор
|
Пост N: 3509
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.11.16 10:37. Заголовок: karta->(dbseek(s..
karta->(dbseek(scp1,.t.)) без установки scope может найти не ту запись, например, залезть в август, и эта запись попадет в цикл. Если выдать seek после scope, то все будет в порядке. Но тогда seek до scope будет лишний.
|
|
|
|
| |
Пост N: 6161
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 10:39. Заголовок: Pasha Понял. Спаси..
Pasha Понял. Спасибо
|
|
|
|