Problema com ALIAS

Delphi

09/05/2004

Olá pessoal.

Estou fazendo uma aplicação que usa banco de dados paradox (sei que é velho, é ruim....) mas estou com um problema.

Eu preciso que o DatabaseName da Table1 siga o caminha da tabela onde ela estiver.

Por exemplo, ponho o executável na pasta C:\Arquivos de programas\gerenciamento preciso que a Table1 consiga ver de alguma maneira que a tabela está nessa pasta.

Como fazer algo assim, ou ao menos parecido sem ter que criar ALIAS no computador, pois o computador do cliente nao tem BDE.


Obrigado,
Rodrigo!


Ropesca

Ropesca

Curtidas 0

Respostas

Edilcimar

Edilcimar

09/05/2004

coloque um arquivo de configuração com o caminho onde está o arquivo e carregando-o de lá, eu utilizo filiais onde coloco cada uma em um diretório e no diretório raiz do programa coloco um arquivo onde digo qual filial é quem, ou seja filial1 = matriz, filial2 = loja bairro x, etc


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

09/05/2004

Colega,

Eu desconheço uma forma do paradox funcionar sem uma engine como o BDE, ADO ou algo do tipo. Como você mencionou ALIAS, acredito que você está utilizando BDE e na verdade estava se referindo que o cliente não possui BDE Administrator instalado.

Para criar um alias em tempo de execução, basta adicionar a unit DBTables na lista de uses e utilizar a seguinte rotina:

  if not Session.IsAlias(´NomeAlias´) then
  begin
    Session.AddStandardAlias(´NomeAlias´, ExtractFilePath(ParamStr(0)), ´PARADOX´);
    Session.SaveConfigFile;
  end;


A função ParamStr(0) retorno o caminho e nome do executável;
A função ExtractFilePath extraí o nome do caminho onde o seu programa foi instalado.

Desta forma, o seu programa vai verificar se o alias já existe e se não existir o cria e aponta para o diretório onde o executário foi executado.


GOSTEI 0
Ropesca

Ropesca

09/05/2004

[quote:2f0f680536=´Aroldo Zanela´]Colega,

Eu desconheço uma forma do paradox funcionar sem uma engine como o BDE, ADO ou algo do tipo. Como você mencionou ALIAS, acredito que você está utilizando BDE e na verdade estava se referindo que o cliente não possui BDE Administrator instalado.

Para criar um alias em tempo de execução, basta adicionar a unit DBTables na lista de uses e utilizar a seguinte rotina:

  if not Session.IsAlias(´NomeAlias´) then
  begin
    Session.AddStandardAlias(´NomeAlias´, ExtractFilePath(ParamStr(0)), ´PARADOX´);
    Session.SaveConfigFile;
  end;


A função ParamStr(0) retorno o caminho e nome do executável;
A função ExtractFilePath extraí o nome do caminho onde o seu programa foi instalado.

Desta forma, o seu programa vai verificar se o alias já existe e se não existir o cria e aponta para o diretório onde o executário foi executado.[/quote:2f0f680536]

Olá amigo.

Obrigado pela ajuda, porém não consegui fazer isso funcionar.

Poderia explicar mais detalhadamento, por favor :wink:

Obrigado,
Rodrigo


GOSTEI 0
Ropesca

Ropesca

09/05/2004

Amigos.

Consegui fazer funcionar este comando somente no meu computador (que tem BDE ADMINISTRATOR). Em outro computador que tentei rodar aqui já deu um erro de BORLANDO DATABASE ENGINE.

Como resolver este meu problema ?

Obrigado,
Rodrigo!


GOSTEI 0
Paulo_amorim

Paulo_amorim

09/05/2004

Amigos. Consegui fazer funcionar este comando somente no meu computador (que tem BDE ADMINISTRATOR). Em outro computador que tentei rodar aqui já deu um erro de BORLANDO DATABASE ENGINE. Como resolver este meu problema ? Obrigado, Rodrigo!


Perdão a ignorância, mas sempre que uso paradox eu nao crio ALIAS nenhum...eu simplesmente indico na propriedade Database o diretório que a tabela se encontra...

Não funcionaria no teu caso?

P.Ex. com uma query:
DataSet.DatabaseName := ExtractFilePath(Application.ExeName);

Até+


GOSTEI 0
Ropesca

Ropesca

09/05/2004

[quote:426b7384f1=´ropesca´]Amigos. Consegui fazer funcionar este comando somente no meu computador (que tem BDE ADMINISTRATOR). Em outro computador que tentei rodar aqui já deu um erro de BORLANDO DATABASE ENGINE. Como resolver este meu problema ? Obrigado, Rodrigo!


Perdão a ignorância, mas sempre que uso paradox eu nao crio ALIAS nenhum...eu simplesmente indico na propriedade Database o diretório que a tabela se encontra...

Não funcionaria no teu caso?

P.Ex. com uma query:
DataSet.DatabaseName := ExtractFilePath(Application.ExeName);

Até+[/quote:426b7384f1]

Não consegui fazer este seu comando funcionar nao.

Alguem pode me ajudar ?

Obrigado,
Rodrigo


GOSTEI 0
Eduardo_lcouto

Eduardo_lcouto

09/05/2004

Utilizando o mesmo comando do nosso colega

´ExtractFilePath( Application.ExeName )´

Faça o seguinte, no evento oncreate do form da aplicação coloque mais ou menos assim.

procedure TForm1.FormCreate(Sender: TObject); var caminho_tabela: string; begin caminho_tabela:=ExtractFilePath( Application.ExeName ); minha_tabela.databasename:=caminho_tabela; minha_tabela.open; end; end.



GOSTEI 0
Aroldo Zanela

Aroldo Zanela

09/05/2004

[quote:070178b44c=´Aroldo Zanela´]Colega,
Eu desconheço uma forma do paradox funcionar sem uma engine como o BDE, ADO ou algo do tipo.[/quote:070178b44c]


GOSTEI 0
POSTAR