Титов Александр
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
|
Posted: 12 Sep 2005 14:31 Post subject: Re: Нужна функция CreateTempIndex для 11x версий |
|
|
itman wrote: | Есть необходимость плагин с 12 на 11 перебросить. Функция CreateTempIndex, я так понял не была реализована. |
Она только в 12, вот ее код:
Code: | FUNCTION CreateTempIndex(cNtxKey,cForKey,cNameTag)
// Создание временных индексов
// Только по одному тэгу в бэге
Local nStep
Local cTagName
Local nProces:=Proces_Ini(,17,,'Построение вспомогательного индекса')
Local n, bForKey, bNtxKey, aIndex, nPoz
Local cNameNtx := TempFile(m->GlobalTmpPath,'CDX')
nStep := IIf(LastRec()==0,1,INT( 54/LASTREC()))
cNameTag := If(cNameTag==NIL, "TMP_TAG", cNameTag)
cForKey := IF(EMPTY(cForKey),"!DELETE()"+IF(FieldPos("DELETE") != 0,".AND.!DELETE","")+IF(FieldPos("ARXIV") != 0,".AND.!ARXIV",""),"!DELETE() .AND."+IF(FieldPos("DELETE") != 0,"!DELETE.AND.","")+IF(FieldPos("ARXIV") != 0,"!ARXIV.AND.","")+" ("+cForKey+")")
SetKeyIndex(@cForKey,@cNtxKey,@bForKey,@bNtxKey)
IF (nPoz := ASCAN(aIndex := BsSaveIndex(),{|cNameIdx| UPPER(cNameIdx) == UPPER(cNameNtx) })) != 0
ADEL(aIndex,nPoz)
ASIZE(aIndex,LEN(aIndex)-1)
BsClearIndex()
BsRestIndex(aIndex)
ENDIF
FERASE(cNameNtx)
dbGoTop()
ordCondSet(cForKey,bForKey,NIL,,;
,;
1,RECNO(),,,.T.,,.F.,,.T., .F., .F., .T., .F., .F.)
IF(cTagName = NIL,cTagName := TOKEN(TOKEN(UPPER(cNameNtx),":\"),".",1),NIL)
ordCreate(cNameNtx,cTagName,cNtxKey,bNtxKey)
ORDSETFOCUS(cTagName)
DBGOTOP()
ReopenDbf()
Proces_End(nProces)
RETURN cNameNtx |
_________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо |
|