STATIC Function OpenAgenda() Local nH Local cFile := "AGENDA" Local aStru := {} // Conecta com o DBAccess configurado no ambiente nH := TCLink() If nH < 0 MsgStop("DBAccess - Erro de conexao "+cValToChar(nH)) QUIT Endif If !tccanopen(cFile) // Se o arquivo nao existe no banco, cria aadd(aStru,{"ID" ,"C",06,0}) aadd(aStru,{"NOME" ,"C",50,0}) aadd(aStru,{"ENDER" ,"C",50,0}) aadd(aStru,{"COMPL" ,"C",20,0}) aadd(aStru,{"BAIRR" ,"C",30,0}) aadd(aStru,{"CIDADE","C",40,0}) aadd(aStru,{"UF" ,"C",02,0}) aadd(aStru,{"CEP" ,"C",08,0}) DBCreate(cFile,aStru,"TOPCONN") Endif If !tccanopen(cFile,cFile+'1') // Se o Indice por ID nao existe, cria USE (cFile) ALIAS (cFile) EXCLUSIVE NEW VIA "TOPCONN" INDEX ON ID TO (cFile+'1') USE EndIf If !tccanopen(cFile,cFile+'2') // Se o indice por nome nao existe, cria USE (cFile) ALIAS (cFile) EXCLUSIVE NEW VIA "TOPCONN" INDEX ON NOME TO (cFile+'2') USE EndIf // Abra o arquivo de agenda em modo compartilhado USE (cFile) ALIAS AGENDA SHARED NEW VIA "TOPCONN" If NetErr() MsgStop("Falha ao Abrir a Agenda em modo compartilhado.") QUIT Endif // Liga o filtro para ignorar registros deletados SET DELETED ON // Abre os indices, seleciona ordem por ID // E Posiciona no primeiro registro DbSetIndex(cFile+'1') DbSetIndex(cFile+'2') DbSetOrder(1) DbGoTop() Return .T.