i want to create a temporary Index TAG and "add" it to existing CDX
i "think" i have to use ADDITIVE when create new Index TAG, but how to "remove TAG"
Moderator: Rathinagiri
Code: Select all
ORDLIST()Code: Select all
? LEN(ORDLIST())Code: Select all
FUNCTION CKAliasBD()
LOCAL cAliasAct:=Alias(), i1, i2, cPso:=""
FOR i1=1 TO 150 // Bases de Datos abiertas
cAlias:=ALIAS( i1 )
IF LEN( cAlias ) > 0
SELE (cAlias)
FOR i2:= 1 TO FCOUNT() ; cPso+=DBFIELDINFO(DBS_TYPE, i2) ; NEXT
F_Debug.G_Dbs.AddItem( { DBINFO(DBI_FULLPATH)+IF( "M" $ cPso, " +DBT", "" ), ;
DBINFO(DBI_ALIAS),DBINFO(DBI_DBFILTER), ;
&cAlias.->(ordSetFocus()), ;
TRANSFORM( ( (RECSIZE()*LASTREC()) + HEADER() + 1), "99,999,999"), ;
StrValue(DBINFO(DBI_GETLOCKARRAY)), StrValue(DBINFO(DBI_ISFLOCK)) ;
} )
cPso:=""
ENDIF
NEXT
SELE (cAliasAct)
RETURN( Nil )
Hola AUGE_OHR, yo trabajo así.
Code: Select all
SELECT fichero
// Genero nombre aleatorio
cFileInd:="I"+cStrZero(INT(HB_RANDOM(1,99999)),5)
// Elijo campo para nuevo indice
cb:=FieldName(3)
// Creo indice por el 3er campo
INDEX ON &cB TO (cFileInd) ADDITIVE
Code: Select all
(cAlias)->(ORDDESTROY(cFileInd))
FERASE(cFileInd)
Code: Select all
INDEX ON recno() TO (cFileInd) ADDITIVE
AUGE_OHR wrote: ↑Tue Nov 01, 2022 12:53 am hi
new Ideabut it fail when compileCode: Select all
ORDLIST()![]()
harbour have ORDLISTADD() and ORDLISTCLEAR() but no ORDLIST()![]()
under Xbase++ i have ORDLIST() so i can askhow under harbour / HMG to find out how man Index are SET to working DBFCode: Select all
? LEN(ORDLIST())![]()
Code: Select all
For n := 1 To OrdCount()
msgdebug ( n, OrdName( n ), OrdKey( n ), OrdBagName ( n ) )
Next
Hola, no entiendo bien lo que quieres hacer. Creo entender que quieres crear un indice para cada campo de la DBF. Este código que te paso no lo he probado, igual tienes que ajustarlo pero en principio debera crearte un Indice para cada uno de los campos de la DBF.
Code: Select all
PROC CreaIndices
LOCAL aExtructura, nFor, cCampo, cIndice, Cais, cBase, cIndice
Cais:=(cDossier+"\"+cFichier)
cBase:=cDossier+"\Ind"
USE &cais
aExtructura:=DBSTRUCT()
FOR nFor=1 TO LEN(aExtructura)
cCampo :=FIELNAME(nFor)
cIndice:=cBAse+StrZero(nFor,2)
INDEX ON &cCampo TO (cIndice) ADDITIVE
NEXT
RETURN
Bonjour,SALINETAS24 wrote: ↑Wed Jan 25, 2023 8:03 pmHola, no entiendo bien lo que quieres hacer. Creo entender que quieres crear un indice para cada campo de la DBF. Este código que te paso no lo he probado, igual tienes que ajustarlo pero en principio debera crearte un Indice para cada uno de los campos de la DBF.
Code: Select all
PROC CreaIndices LOCAL aExtructura, nFor, cCampo, cIndice, Cais, cBase, cIndice Cais:=(cDossier+"\"+cFichier) cBase:=cDossier+"\Ind" USE &cais aExtructura:=DBSTRUCT() FOR nFor=1 TO LEN(aExtructura) cCampo :=FIELNAME(nFor) cIndice:=cBAse+StrZero(nFor,2) INDEX ON &cCampo TO (cIndice) ADDITIVE NEXT RETURN