Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Изменились параметры setscope() в БЭСТ5?

 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
ewgen



Joined: 23 Nov 2002
Posts: 339
Location: Евгений
Occupation: (инженер программист)
Interests: Надым

PostPosted: 14 Sep 2007 15:05    Post subject: Изменились параметры setscope() в БЭСТ5? Reply with quote

БЭСТ 5/3.3/32
В файле bases_00.dbf для файла main.dbf существует индекс:
Code:
Tag_nomer: 02
Tag_name:  TAG_TASK
Index:         TASK+DTOS(DATAOPER)+UPPER(NNDOC)


NETUSE("_main",LoadPath()+"\main.dbf",,.F.)
_main->(ORDSETFOCUS("TAG_TASK")) //это работатет
...
Пытаюсь поставить скоп по модулю зарплата, по определенному месяцу.
первый вариант:
Code:
   _main->(setscope("TAG_TASK",
                 "14"+dtos(ctod("01/"+b+"/"+g)),
                 "14"+dtos(EOM(ctod("01/"+b+"/"+g))))) //не работает.
второй вариант (работает):
Code:
  _main->(setscope("02",
                "14"+dtos(ctod("01/"+b+"/"+g)),
                "14"+dtos(EOM(ctod("01/"+b+"/"+g))))) //работает


В БЭСТ 4+/12/35 работал первый вариан
Back to top
View user's profile Send private message Send e-mail
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 14 Sep 2007 15:24    Post subject: Re: Изменились параметры setscope() в БЭСТ5? Reply with quote

ewgen wrote:
:
Code:
   _main->(setscope("TAG_TASK",
                 "14"+dtos(ctod("01/"+b+"/"+g)),
                 "14"+dtos(EOM(ctod("01/"+b+"/"+g))))) //не работает.
второй вариант (работает):
Code:
  _main->(setscope("02",
                "14"+dtos(ctod("01/"+b+"/"+g)),
                "14"+dtos(EOM(ctod("01/"+b+"/"+g))))) //работает


В БЭСТ 4+/12/35 работал первый вариант.


Ни первый ни второй вариант ни в Б5 ни в Б4 не правильно.
(Не соответствует документации)

Quote:
SetScope(cScope,xScope,xScope1,aOrder) – задание ключевого интервального фильтра

· cScope выражение для ключевой фильтрации в виде символьной строки для вычисления (путем макроподстановки) значения ключа при фильтрации.




Первый параметр SCOPE() не имя индекса а старшая часть индексного ключа должны быть.
У Вас индексный ключ
Code:
 TASK+DTOS(DATAOPER)+UPPER(NNDOC)

Вот и пишите из него
Code:
_main->(setscope("TASK",.......)
Back to top
View user's profile Send private message Send e-mail
ewgen



Joined: 23 Nov 2002
Posts: 339
Location: Евгений
Occupation: (инженер программист)
Interests: Надым

PostPosted: 15 Sep 2007 08:13    Post subject: Reply with quote

Спасибо! Работает.

Странно...
Я уже больше года пользуюсь именем индекса при установке скопа.
И все работало

Code:
function main()
private a,b,sum
private aSet,aSetKey

dbpush()
aSet:=SaveSet()
aSetKey:=SaveSetKey()

NETUSE("_main",LoadPath()+"\main.dbf",,.F.)
_main->(ORDSETFOCUS("summa_data"))

a:=str(1000,19,3)
b:=str(2000,19,3)
sum:=0

 _main->(SETSCOPE())
 _main->(SETSCOPE("summa_data",a,b))
 _main->(DBGOTOP())

while (_main->(!EOF()))
    sum:=sum+_main->summa
 _main->(DBSKIP())
enddo

sayandwait("Сумма по проводкам от 1000 до 2000 составляет_"+str(sum))

_main->(DBCLOSEAREA())
RestSetKey(aSetKey)
RestSet(aSet)
dbpop()
return nil


Даже когда создавал собственные индексы, в первый параметр скопа писал их имя.

Code:
NETUSE("_iznos",LoadPath()+"\oc\iznos.DBF",,.F.)
 _iznos->(ordcreate(LoadPath()+"\oc\_iznos","uoc",UPPER("unioc+dtos(period)")))
 _iznos->(dbsetindex(LoadPath()+"\oc\_iznos.cdx"))
 _iznos->(ORDSETFOCUS("uoc"))
 _iznos->(setscope(UPPER("uoc"),_coc->unioc+"20010101",_coc->unioc+"20011231"))
  _iznos->(dbgotop())
  s:=0
  while _iznos->(!eof())
   s:=s+_iznos->summa
   _iznos->(dbskip())
  enddo
Back to top
View user's profile Send private message Send e-mail
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 17 Sep 2007 12:00    Post subject: Reply with quote

Ну что сказать....все ли корректно работало не знаю.
Возможно в Б4+ была защита от тех, кто имя индекса вписать
вдумает (не анализировал) или просто совпадения.
Одно могу сказать точно:
ЧИТАЙТЕ ВНИМАТЕЛЬНО ДОКУМЕНТАЦИЮ !!!
Если чего нет или непонятно - всегда можно спросить.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru