Ir para conteúdo
Fórum Script Brasil
  • 0

Banco Paradox Na Mesma Pasta Do Programa[resolvido]


Eder

Pergunta

Ola...Pessoal

Eu uso paradox somente, e tenho o costume de trabalhar com Tables e Querys.

Então pra configurar as tabelas em digito no DatabaseName da Table ou query...o alias ou o caminho do banco tipo c:\bdados

Mas eu gostaria de saber se tem alguma maneira de eu configurar pra pegar as tabelas aonde esta o programa executavel, ou seja, não usar nem alias e nem o endereço c:\bdados

Neste caso eu queria jogar as tabelas e o executavel(programa) numa unica pasta...e ai o programa seria inteligente o suficiente pra saber que as tabelas estão juntas e ai executar.....

Vamos supor que o usuario resolvesse pegar esta pasta com o executavel e as tabelas e renomear ou copiar pra outra pasta....o programa continuaria sempre funcionando..pois sempre estariam juntas o executavel + as tabelas...

Tem como??

Grato

Editado por Eder
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Tem como fazer isto sim, e uma das maneiras é ... se voce já definiu um Alias em tempo de projeto, basta colocar este codigo na primeira janela do seu programa no evento on create do form

procedure TForm1.FormCreate(Sender: TObject);
begin

     { se o alias não existir... }
   if not Session.IsAlias('MEU_ALIAS') then   // colocar o alias que voce criou
      begin
         { Adiciona o alias }
         Session.AddStandardAlias('MEU_ALIAS', 'C:\TESTE\ARQUIVOS', 'PARADOX');  // caminho do banco de dados 
         { Salva o arquivo de configuração do BDE }
         Session.SaveConfigFile;
      end; 

end;
A outra maneira é extraindo o caminho onde o programa estiver sendo executado:
procedure TForm1.FormCreate(Sender: TObject);
var  S: string;
begin
   S := extractFilepath(application.exename)+'ARQUIVOS\';   // se existir um subdiretorio arquivos onde esta rodando o programa
   showmessage(s);
   query1.DatabaseName := s; // caminho onde esta os arquivos
end;
OBS: como as instruções SQL já estão definidas com os respectivos arquivos, ao ativar as querys o caminho passado para o query1.DatabaseName fara o resto quando as querys forem ativadas; Como voce quer executavel e arquivos na mesma pasta é só trocar o comando
S := extractFilepath(application.exename);

Link para o comentário
Compartilhar em outros sites

  • 0

Jonas, é isto aí.

A melhor opção e ideal é a primeira - utilizando um alias, você faz todo o programa em função deste alias e antes de utilizá-lo inicializa o caminho do mesmo.

Já se tiver que alterar o path em cada componente....

Tem algum tempo (dez/2006) eu havia feito um exemplo de uso para Alias Dinâmico. Se interessar, no link do 4Share (alí embaixo na minha assinatura), na pasta Programacao tem um carinha chamado BDEAlias-Dinamico.zip.

Link para o comentário
Compartilhar em outros sites

  • 0
Tem como fazer isto sim, e uma das maneiras é ... se voce já definiu um Alias em tempo de projeto, basta colocar este codigo na primeira janela do seu programa no evento on create do form

CODE

procedure TForm1.FormCreate(Sender: TObject);

begin

{ se o alias não existir... }

if not Session.IsAlias('MEU_ALIAS') then // colocar o alias que voce criou

begin

{ Adiciona o alias }

Session.AddStandardAlias('MEU_ALIAS', 'C:\TESTE\ARQUIVOS', 'PARADOX'); // caminho do banco de dados

{ Salva o arquivo de configuração do BDE }

Session.SaveConfigFile;

end;

end;

R.: muito Bom Jonas....e pensar que eu configuro alias na mão, ou uso um programinha que faz a configuração....valeu...jóia..adorei esta dica.

A outra maneira é extraindo o caminho onde o programa estiver sendo executado:

CODE

procedure TForm1.FormCreate(Sender: TObject);

var S: string;

begin

S := extractFilepath(application.exename)+'ARQUIVOS\'; // se existir um subdiretorio arquivos onde esta rodando o programa

showmessage(s);

query1.DatabaseName := s; // caminho onde esta os arquivos

end;

OBS: como as instruções SQL já estão definidas com os respectivos arquivos, ao ativar as querys o caminho passado para o query1.DatabaseName fara o resto quando as querys forem ativadas;

Como voce quer executavel e arquivos na mesma pasta é só trocar o comando

CODE

S := extractFilepath(application.exename);

R.: Esta aqui é que eu precisava de momento....muito boa....

A Minha dúvida é a seguinte...como tenho table´s e query´s espalhadas em vários form´s do mesmo programa.....colocando no OnCreate este codigo acima no formPrincipal...vai funcionar em todos os outros forms que tem query e table´s??

Haaa.....neste caso...aqui no DatabaseName das queryes e table´s eu deixo em branco e o seu codigo é que na hora da execução vai gerenciar o caminho dos arquivos de dados ...é isto??

Tem algum tempo (dez/2006) eu havia feito um exemplo de uso para Alias Dinâmico. Se interessar, no link do 4Share (alí embaixo na minha assinatura), na pasta Programacao tem um carinha chamado BDEAlias-Dinamico.zip.

R.: Micheus eu já baixei o seu exemplo e vou testar em casa, pra ver seu funcionamento.

Valeu pessoal..estas dicas foram show..

muito Grato a todos.

Editado por Eder
Link para o comentário
Compartilhar em outros sites

  • 0
A Minha dúvida é a seguinte...como tenho table´s e query´s espalhadas em vários form´s do mesmo programa.....colocando no OnCreate este codigo acima no formPrincipal...vai funcionar em todos os outros forms que tem query e table´s??

Haaa.....neste caso...aqui no DatabaseName das queryes e table´s eu deixo em branco e o seu codigo é que na hora da execução vai gerenciar o caminho dos arquivos de dados ...é isto??

Para este caso você talvez encontre resposta no exemplo que uso.

O que ocorre é que você adiciona ao seu projeto (form ou datamodule principal) um TDataBase, configura o drive (standard para paradox), define um nome na propriedade DataBasename, certo?!

Então, nos componentes em questão (table e query), você liga eles ao tal componente database como se ele fosse um dos seu alias do BDE (é só procurar que ele estará na lista). Deste modo, basta apenas que antes de ativar o componente DataBase, você inicialize a o caminho em Params. Tá lá no exemplo. Se tiver dúvida é só postar.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Acho que o Micheus já respondeu a sua questão ... é isso ai ...

R. Sim esta semana vou dar uma estudada de novo....eu tava com umas pepas ai pra resolver...e não deu mais pra mexer..

Por enquanto valeu...você e o Micheus.

Grato :)

Link para o comentário
Compartilhar em outros sites

  • 0

Vou reabrir o tópico porque estava com a mesma dúvida do Eder, e achei

uma solução bem rápida e prática...

Eder, em "PATH=", ao invés de colocar o caminho completo da base de dados,

basta apontar para a própria pasta com os seguintes caracteres: ".\". Ficaria

assim:

PATH=.\

DEFAULT DRIVER=PARADOX

ENABLE BCD=FALSE

Espero que seja útil a outras pessoas. Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Eder, em "PATH=", ao invés de colocar o caminho completo da base de dados,

basta apontar para a própria pasta com os seguintes caracteres: ".\".

Só para constar, na verdade não é necessário nem isto.

Como havia mencionado, adicionando um componente TDatabase (como você já faz), configure DriverName=STANDARD, dê um nome ao alias na propriedade DatabaseName (digamos "DBEder") e LoginPrompt=False. Assim, nos componentes TQuery ou TTable, este será o nome a ser selecionado na respectiva propriedade. Só isto!

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...