Obter nome de arquivo através do Alias()

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

RGStahl
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 10 Dez 2004 08:15
Contato:

Obter nome de arquivo através do Alias()

Mensagem 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
Grato

Ricardo G. Stahl
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem 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


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Responder