Information générale
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
>I'm creating a program that will extract all the index information of a file. I used TAG() to determine the index name, KEY() for the index expresion.
>Is there a function that returns order (ASCENDING or DESCENDING), and a function that returns the index type (Regular, Primary, Candidate, Unique), and also the Filter Expression.
>Thanks in advance!
You look into this program Eric. It list down index expression of your table.
**************************************
**
** Function : GetIndexExpr
** Purpose : Creates list of index expression of a table
** Params : cTable (character) - table name
** Programmer : Jess S. Banaga
** Date Started: 03/02/2000
** Modified : 03/20/2000 - to accomodate multi-table structure printing
**
** Syntax : Old - GetIndexExpr('tablename.dbf')
** New - GetIndexExpr()
**
**************************************
** Get table name
gcTable = GETFILE('DBF','Create Index Expression File','Create File')
IF !EMPTY(gcTable)
** invoke procedure to get index expression
DO GetExpr WITH SUBSTR(gcTable,1,RAT('.',gctable))
ELSE
** specify directory folder to scan
gcDIR = GETDIR(FULLPATH(''),'Directory Table')
IF !EMPTY(gcDIR)
** assign table list to array variable
nCntr = ADIR(cTableFile,'*.DBF')
** scan array variable
FOR i = 1 TO nCntr
gcTable = cTableFile(i,1)
** invoke procedure to get index expression
DO GetExpr WITH gcTable
ENDFOR
ENDIF
ENDIF
CLOSE ALL
RETURN
>**************************************
>** End fo program GetIndexExpr
>** Date Finished : 03/02/2000
>**************************************
>**************************************
>** Procedure : GetExpr
>** Purpose : Creates Text File
>** Params : cTable - Table Name
>**************************************
>PROCEDURE GetExpr ( cTable )
>cFile = ctable+'.txt'
>SET DEVICE TO FILE &cFile
>@PROW(),00 SAY 'TABLE NAME : '+cTable
>@PROW(),00 SAY ' '
>@PROW(),00 SAY 'INDEX TAG NAME INDEX EXPRESSION'
>@PROW(),00 SAY '-------------------- >-------------------------------------------------'
>FOR i = 1 TO TAGCOUNT()
> ** GET index tab
> cIndexTag = ALLT(TAG(ctable,i,ctable))
> ** GET INDEX EXPRESSION
> cIndexExpr = ALLT(SYS(14,i,ctable))
> @PROW(),00 SAY cIndexTag
> @PROW(),20 SAY cIndexExpr
>ENDFOR
>** Look the output now
>modi comm (ctable) noedit
>USE IN (cTable)
>SET DEVICE TO SCREEN
>HTH
Thank a lot Jess!
How about the:
- order (ASCENDING/DESCENDING)
- index type (Regular, Primary, Unique, Candidate)
- and the filter expression/condition (ex. "!EMPTY(name)")
Waiting for your reply...
eric
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement