Página 1 de 1

Obter nome de arquivo através do Alias()

Enviado: 28 Dez 2004 17:52
por RGStahl
Alguém sabe se existe alguma função que retorne o Nome do Arquivo DBF através de seu Alias.

Por exemplo:

Tenho um arquivo chamado CadCli.DBF, que sempre abro com o Alias "CLI".

Como faço para saber que o nome do arquivo é CadCli através dee seu Alias.

Para vcs entenderem o que estou querendo: Preciso de uma forma de salvar todos os arquivos abertos, para poder fechá-los, e depois restaurá-los no estado em que estavam. Se eu abro um arquivo com Alias, não conseguirei restaurá-lo, pois não sei o nome do arquivo. Por isso que preciso de uma forma de saber o nome do arquivo.

Não precisa necessariamente ser através do Alias. Pode ser através do Número da Área retornado pelo Select(), ou qualquer outra forma.


Alguém aí tem alguma idéia de como fazer isso ??

Valeu

Enviado: 29 Dez 2004 02:12
por Dudu_XBase
Ricardo Boa Noite.
No clipper 5.3 tem a função dbfinfo().
Desconheço tal comando que faça isso no clipper 5.2e mas tenho uma solução.
Ao abrir o arquivo vc pode adicionar os dados numa matriz por exemplo

aFiles := {}

use ricardo alias rica new
dbsetindex("ricardo1'")
dbsetindex("ricardo2")
dbsetindex("ricardo3")

// adiociono na matriz os dados do dbf aberto...
aadd(aFiles,{"ricardo", alias(),{"ricardo1","ricardo2","ricardo3"},0})


ao Fechar vc pode criar uma função para fechar os arquivos com o conteúdo da matriz...

// Exemplo para fechar

For i:=1 to len(aFiles)
dbselectarea(aFiles[i,2])
dbclosearea()
// guardo na posição 4 a posição do indice corrente...
aFiles[i,4] := indexord()
Next


//Exemplo para Restaurar os arquivos...
For i:=1 to len(aFiles)
// pego os dados..
cArquivo := aFiles[i,1]
cAlias := aFiles[i,2]

// Abro o banco de dados corrente
use &cArquivo alias &cAlias new

// Abro os indices novamente
For j:=1 to len(aFiles[i,3]
dbsetindex(aFiles[i,3,j]
Next

// deixo o indice na posição corrente..
Dbsetorder(aFiles[i,4])

Next