Olá!
Raquel: testei o código do teu primeiro post com o DBF que você enviou e a busca funciona perfeitamente. Isso acontece porque você cria o índice na hora.
O problemas que você teve foram causados porque você não abria os índices. Neste último post, você está fazendo isso, apesar de estar no local errado (etá dentro do loop DO WHILE...ENDDO).
Como boa prática, sempre que abrir uma tabela, já abra os respectivos índices e depois mude a ordem para a que você necessita para ler os dados.
Código: Selecionar todos
// Habitue-se a fazer #include "Inkey.ch". Esta linha ficaria IF LASTKEY() == K_ESC, mais fácil de entender
#include "Inkey.ch"
// Crie o hábito de sempre declarar sua variáveis. Prefira as dos tipos LOCAL e STATIC
LOCAL pData, pResumo, pNumCart, GetList := {}
CLS
SET DATE BRITISH
SET CENTURY ON
// acostume-se a definir o modo de abertura (SHARED ou EXCLUSIVE).
// Use a cláusula NEW que sempre abre o arquivo na próxima área livre disponível
SELE 1//
USE CADCART SHARED NEW ALIAS CADCART
// após abrir o DBF, sempre abra os índices logo em seguida.
CADCART->( DbSetIndex, "cadcart1" )
CADCART->( DbSetIndex, "cadcart2" )
CADCART->( DbSetIndex, "cadcart3" )
CADCART->( DbSetIndex, "cadcart4" )
CADCART->( DbSetIndex, "cadcart5" )
CADCART->( DbSetIndex, "cadcart6" )
// Você pode abrir os índices de todos de uma vez:
// SET INDEX TO cadcart1, cadcart2, cadcart3,cadcart4,cadcart5,cadcart6
// ou pode abrir o DBF e os índices de uma só vez:
// USE CADCART SHARED NEW ALIAS CADCART INDEX cadcart1, cadcart2, cadcart3,cadcart4,cadcart5,cadcart6
CADCART->( DbSetOrder( 6 ) )
@ 03,01 TO 20,51
pDATA := CTOD("")
@ 05,05 SAY "Data.....:" GET pDATA
READ
DO WHILE LastKey() != K_ESC
// SELE CADCART ===> desnecessário pois só tem este arquivo aberto...
// SET INDEX TO CADCART6 //mudei de Set Order to 6 ==> os índices já estão abertos
// SEEK SUBSTR(dtoc(pDATA),7,4)+SUBSTR(dtoc(pDATA),4,2)+SUBSTR(dtoc(pDATA),1,2) && Erro com área nao indexada
//IF FOUND()
IF CADCART->( DbSeek( SUBSTR(dtoc(pDATA),7,4)+SUBSTR(dtoc(pDATA),4,2)+SUBSTR(dtoc(pDATA),1,2) ) )
pRESUMO := CADCART->RESUMO
pNUMCART:= CADCART->CARTAO
IF EMPTY(pRESUMO)
@ 07,05 SAY "resumo vazio"+STR(pNUMCART,3)
ENDIF
ENDIF
@ 05,05 SAY "Data.....:" GET pDATA
READ
ENDDO
CLOSE ALL
CLS
RETURN