Página 1 de 1

Indice corrompido?

Enviado: 29 Jul 2013 22:43
por marcos.gurupi
Caros, estah acontecendo algo estranho comigo. Estou usando dois sistemas que abre o mesmo arquivo, acontece que quando um sistema abre um determinado arquivo e cria o indice o outro sistema quando vai abrir diz que o indice estah corrompido, isso acontece virse e versa, ou seja, somente o arquivo q crio o indice abre sem erro. Segue abaixo como estou usando:

Sistema 1

Código: Selecionar todos

Select 1
Use (vPrinterDBF) NEW Alias "DBFPrinter" Shared
If !File(vPrinterCDX)
	Do While .t.
	   If travarqivo(5)
      	Index on Pedido   tag key001 to (vPrinterCDX)
      	Index on NoMesa   tag key002 to (vPrinterCDX)
      	Index on Atendent tag key003 to (vPrinterCDX)
      	Index on Status   tag key004 to (vPrinterCDX)
      	Index on Pedido   tag key005 to (vPrinterCDX) FOR STATUS="0"
      	//Index on Pedido   tag key001 to (vPrinterCDX) FOR STATUS="0"
      	DbUnlock()
   	Else
   	   Loop
	   Endif
	   Exit
   Enddo
Else
	dbsetindex((vPrinterCDX))
Endif
Sistema 2

Código: Selecionar todos

DO WHILE .T.
   SELECT 10
   dbf:=xEndDados+"Printer.dbf"
   ind:=xEndDados+"Printer.cdx"
   if ABRE((dbf))
      IF !FILE((ind))
         do while .t.
            if travarqivo(5)
            	Index on Pedido   tag key001 to (IND)
            	Index on NoMesa   tag key002 to (IND)
            	Index on Atendent tag key003 to (IND)
            	Index on Status   tag key004 to (IND)
            	Index on Pedido   tag key005 to (IND) FOR STATUS="0"
               DBUNLOCK()
            else
               MSGSTOP("Arquivo sendo alterado no momento.")
               loop
            endif
            exit
         enddo
      endif
   else
      MsgStop("Arquivo sendo alterado no momento.")
      loop
   ENDIF
   DBSETINDEX((IND))
   EXIT
ENDDO
:%

Indice corrompido?

Enviado: 30 Jul 2013 09:34
por Amparo
ola amigos

Marcos, tente usar na abertura dos seus arquivos da seguinte forma:

DBUSERAREA(.T.,"DBFCDX",ARQUIVO_DBF,ALIAS,.T.,ARQUIVO_CDX)
.T. = NEW
DBFCDX = tipo de arquivo do indice se é CDX, NTX, IDX ...
ARQUIVO_DBF= deve conter por exemplo C:\SISTEMA\CLIENTES.DBF
ALIAS = nome da alias CLIENTES
.T. = SHARED
AQUIVO_CDX = nome do arquivo de indice CLIENTES

para criar os indice é da mesma forma que vc esta utilizando

e depois para selecionar um arquivo use:
DBSELECTAREA("CLIENTES")

para ativar uma TAG de indice use:
ORDSETFOCUS("cnpj")

abraços
amparo