ich habe in einer Datenbank Infos zum Index vorliegen.
Nummer, Name, Key und je eine Spalte mit Infos zu UNIQUE, DESCENDING, CANDIDATE, SUBINDEX hier steht ein „X“, wenn zutreffend, sonst leer.
In einer Schleife versuche ich nun den Index (CDX) mit INDEX ON anzulegen.
Code: Alles auswählen
// Indexstruktur erzeugen
WHILE ! DB_INDEX->( Eof() )
// Indexinformationen zusammen stellen
cIndexDatei := pcVerzeichnis + "\" + Alltrim( pcScope ) + ".CDX"
cIndexKey := Alltrim( DB_INDEX->ORDKEY )
cIndexTag := Alltrim( DB_INDEX->ORDNAME )
lUnique := IIF( DB_INDEX->ORDUNIQUE == "X", .T., .F. )
lDescend := IIF( DB_INDEX->ORDDESCEND == "X", .T., .F. )
lCandidate := IIF( DB_INDEX->ORDCANDIDA == "X", .T., .F. )
lSubindex := IIF( DB_INDEX->ORDSUBINDE == "X", .T., .F. )
// Index erzeugen
IF .NOT. lUnique
INDEX ON &cIndexKey TAG &cIndexTag TO &cIndexDatei
ELSEIF lDescend .OR. lCandidate .OR. lSubindex
cTxt := "Index konnte nicht automatisch erstellt werden, " + ;
"da er eine der Eingenschaften 'Descend, Candidate, Subindex' enthält!"
Write_Protokol( cTxt, .F. )
ELSE
INDEX ON &cIndexKey TAG &cIndexTag TO &cIndexDatei UNIQUE
ENDIF
DB_INDEX->( DbSkip() )
END
Code: Alles auswählen
// Indexstruktur erzeugen
WHILE ! DB_INDEX->( Eof() )
// Indexinformationen zusammen stellen
cIndexDatei := pcVerzeichnis + "\" + Alltrim( pcScope ) + ".CDX"
cIndexKey := Alltrim( DB_INDEX->ORDKEY )
cIndexTag := Alltrim( DB_INDEX->ORDNAME )
lUnique := IIF( DB_INDEX->ORDUNIQUE == "X", .T., .F. )
lDescend := IIF( DB_INDEX->ORDDESCEND == "X", .T., .F. )
lCandidate := IIF( DB_INDEX->ORDCANDIDA == "X", .T., .F. )
lSubindex := IIF( DB_INDEX->ORDSUBINDE == "X", .T., .F. )
INDEX ON &cIndexKey TAG &cIndexTag TO &cIndexDatei IIF(lUnique, UNIQUE, NIL) IIF(lDescend, DESCENDING, NIL) IIF(lCandidate, CANDIDATE, NIL) IIF(lSubindex, SUBINDEX, NIL)
DB_INDEX->( DbSkip() )
END
Jeder Tipp ist willkommen.
Viele Grüße,
Magic