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
Obter nome de arquivo através do Alias()
Moderador: Moderadores
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
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
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
