Página 1 de 1

Criar arquivos (DBF e INDICES) em pastas diferentes

Enviado: 14 Fev 2007 08:24
por negrao
Mocada, to precisando da seguinte ajuda.
Abaixo, esta um exemplo de funcao que uso pra abrir e criar meus arquivos.
Na FUNCAO ABRE() , gostaria que meus DBF ficasse na pasta DADOS(isso ja deu certo) e os INDICES na pasta INDICE(isso nao consegui nem a pau).

Obrigado pela ajuda

/*****************************************************/
FUNCTION MODULO()
LOCAL CARQ

CARQ := 'MODULO.DBF'
AEST := { { 'USULOG' , 'C', 16, 0 } , ;
{ 'MODULO' , 'C', 6, 0 } , ;
{ 'CODERRO' , 'N', 1, 0 } , ;
{ 'TERERRO' , 'C', 14, 0 } }
AIND := {{'USULOG','USULOG'}}
ABRE(CARQ,AEST,AIND,'TERM')
RETURN

/*****************************************************/
FUNCTION ABRE(CARQ,ASTRUCT,AIND,CALIAS)
LOCAL BLASTH,OBJERROR,LRET:=.T.,NI,CCAMPO,CIND

WHILE .T.
CARQI := 'INDICE\'+SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
CARQD := "DADOS\"+CARQ

IF AIND <> NIL
BEGIN SEQUENCE
IF !FILE(CARQD) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQD,ASTRUCT,'SIXCDX')
DEL(CARQI)
ELSEIF !FILE(CARQD)
LRET:=.F.
ENDIF

IF FILE(CARQD)
IF !EMPTY(SELECT(CALIAS))
&CALIAS->(DBCLOSEAREA())
ENDIF

IF !FILE(CARQI) .AND. !EMPTY(AIND)
DBUSEAREA(.T.,'SIXCDX',CARQD,CALIAS,.F.)
WHILE EMPTY(SELECT(CALIAS))
DBUSEAREA(.T.,'SIXCDX',CARQD,CALIAS,.F.)
ENDDO

FOR NI = 1 TO LEN(AIND)
CCAMPO := AIND[NI,1]
CIND := AIND[NI,2]
INDEX ON &(CCAMPO) TAG &(CIND)
NEXT
&CALIAS->(DBCLOSEAREA())
ENDIF
DBUSEAREA(.T.,'SIXCDX',CARQD,CALIAS,.T.)

IF !EMPTY(AIND)
CIND := AIND[1,2]
SET ORDER TO TAG &CIND
ELSE
DBGOTO(1)
ENDIF
ELSE
LRET:=.F.
ENDIF
RECOVER USING OBJERROR
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
ENDIF

IF (OBJERROR:SUBSYSTEM = "SIXCDX")
IF (OBJERROR:SUBCODE = 602)
IF (SUBS(OBJERROR:FILENAME,-3) = "CDX")
DEL(OBJERROR:FILENAME)
ENDIF
ENDIF
ENDIF
LOOP
END
ELSE
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
endif

IF !FILE(CARQD) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQD,ASTRUCT,'SIXCDX')
ENDIF
DBUSEAREA(.T.,,CARQD,CALIAS,.T.)
ENDIF
EXIT
ENDDO

IF LMEN
MENS()
ENDIF
RETURN(LRET)

Enviado: 14 Fev 2007 09:19
por gvc
Veja que vc coloca em CARQI aonde deverão estar os indices, mas não usa essa informação quando vai criar os arquivos CDX.

Enviado: 16 Fev 2007 13:48
por negrao
Eu sei GVC, mas de todas as formas imaginaveis nao deu certo pra se criar os indices em outra pasta.
Toda vez cria no mesmo diretorio onde esta a base de dados.

Obrigado

Enviado: 16 Fev 2007 13:58
por Grings
Não lí o seu código, mas se vc especificar o caminho vai dar certo.

Index On .... To C:\Teste\Indices\Arquivo.NTX