Retornar nome do dbf corrente

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

tcharraw
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 06 Jul 2010 23:29
Localização: Eunapolis

Retornar nome do dbf corrente

Mensagem por tcharraw »

Alguem sabe que comando do xHarbour eu uso para poder retornar o nome do arquivo dbf que está sendo utilizando ?
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Retornar nome do dbf corrente

Mensagem por sygecom »

#include "DbInfo.ch"
DBInfo(DBI_FULLPATH)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Retornar nome do dbf corrente

Mensagem por rochinha »

Amiguinhos,

Desde quando usava Clipper eu usava a função DBF().

Caso queira saber quantos indices estão ativos para a área corrente use:

Código: Selecionar todos

FUNCTION NDXCOUNT()
   LOCAL counter
   FOR counter = 1 TO 15
       IF EMPTY(INDEXKEY(counter))
          EXIT
       ENDIF
   NEXT
   RETURN (counter-1)
Caso queira uma lista de indices use:

Código: Selecionar todos

FUNCTION ordList()
   LOCAL counter
   PUBLIC nomes_ndx := {}
   FOR counter = 1 TO 15
       IF EMPTY(INDEXKEY(counter))
          EXIT
       ENDIF
       AADD(nomes_ndx,ORDNAME(counter))
   NEXT
   RETURN nomes_ndx
Caso queira saber os nomes de todos DBFs abertos no momento use:

Código: Selecionar todos

FUNCTION dbfList()
   LOCAL counter
   PUBLIC nomes_dbf := {}
   FOR counter = 1 TO 255
       IF EMPTY(ALIAS(counter))
           EXIT
       ENDIF
       AADD(nomes_dbf,ALIAS(counter))
   NEXT
   RETURN nomes_dbf
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Retornar nome do dbf corrente

Mensagem por sygecom »

Olá Rochinha,
O nome do ALIAS nem sempre é o mesmo nome do DBF, eX.:
use AGENDA alias AGEN shared

DBF()// AGEN (acho errado, no meu ver deveria voltar o nome do DBF e volta o nome do ALIAS)
ALIAS() // AGEN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Retornar nome do dbf corrente

Mensagem por lugab »

Pessoal, aproveito o tema deste tópico pra perguntar o seguinte:

Numa pasta eu tenho vários dbfs e não sei o nome de nenhum deles.

Como faço para listar na tela o nome de cada um desses arquivos, um a um ?

E sim, eu pesquisei no fórum, e o tópico q achei e q chegou mais perto do q necessito foi este, sobre ADIR e cia

Grato
lugab
Avatar do usuário
kiko
Usuário Nível 3
Usuário Nível 3
Mensagens: 145
Registrado em: 08 Jul 2004 15:24
Localização: Cianorte

Retornar nome do dbf corrente

Mensagem por kiko »

usa a função Directory...

Código: Selecionar todos

#include "Directry.ch"
PROCEDURE Main
   LOCAL aDir
   aDir := Directory( "*.prg" )
   AEval( aDir, {|a| QOut( a[F_NAME] ) } )
   aDir := Directory( "C:", "V" )
   AEval( aDir[1], {|x| QOut( x ) } )
RETURN
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Retornar nome do dbf corrente

Mensagem por lugab »

Kiko, não fui feliz em meu pedido de ajuda.

Na verdade eu tenho uma rotina para pegar todos os dbfs (não sei quantos e nem quais os seus nomes) , que é bem simples, veja:.

Código: Selecionar todos

   private vdir[adir("*.dbf")] 
   adir("*.dbf",vdir) 
Eu só não sei como pegar cada dbf encontrado e dar um PACK , automaticamente e encerrar a rotina logo após o último dbf encontrado e packeado.

Vc, ou algum outro colega, saberia como fazer ?
lugab
joaoalpande
Usuário Nível 2
Usuário Nível 2
Mensagens: 93
Registrado em: 24 Fev 2005 09:04
Localização: CAMPO GRANDE / MS

Retornar nome do dbf corrente

Mensagem por joaoalpande »

com xharbour faço assim , não sei se é igual no harbour

Código: Selecionar todos

Function Zapea()
   LOCAL aDir, aFile, cFile, nI
   aDir:={}; aFile:={}
   aDir:=Directory("*.DBF")
   AEval(aDir,{|f| AAdd(aFile,f[1])})
   FOR nI=1 TO Len(aFile)
      cFile:=aFile[nI]
      IF !Protect(cFile)
         USE (cFile) NEW
         ZAP
         PACK
         USE
      ENDIF
   NEXT nI
RETURN (Nil)
Editado pela última vez por Pablo César em 12 Fev 2012 09:56, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Retornar nome do dbf corrente

Mensagem por lugab »

Obrigado Kiko e João, graças a vcs o problema ta resolvido.

Espero poder retribuir-lhes um dia

Gabriel
lugab
Responder