Conexão INI com data Module

Delphi

29/12/2012

Pessoal estou com uma dificuldade, estou tentando fazer minha aplicação rodar em rede para isso vou usar arquivo de conexao .ini, estou usando um data module, e ibdatabase e Ibquery, gostaria de saber qual a melhor maneira para se fazer neste caso, tentei usar alguns exemplos que encontrei aqui mesmo no DevMedia porem nao deu certo.
Andre Ucella

Andre Ucella

Curtidas 0

Respostas

José Rocha

José Rocha

29/12/2012

_______________________________________________________________________________________
_______________________________________________________________________________________

OLÁ A VOCÊ E ATODOS ESTE É MEU PRIMEIRO TÓPICO NO DEVMEDIA EM PRIMEIRO LUGAR QUERO
AQUI AGRADECER PELA OPORTUNIDADE DE CADASTRO GRATUÍTA NO SITE, AOS ADMINISTRADORES
E TODO O PESSOAL QUE COMPÔEM O DEVMEDIA.
_______________________________________________________________________________________
_______________________________________________________________________________________

AMIGO EU ESTAVO DANDO UMA OLHADA NO CONTÉUDO QUANDO VIR SUA DÚVIDA,
SÓ PARA QUE SAÍBA NO MOMENTO EU NÃO ESTOU EM CASA, ESTOU UTILIZANDO UM COMPUTADOR
DO TRABALHO ENTÃO NÃO POSSO TE GARANTIR 100% QUE VAI DAR CERTO, SE EU ESTIVESSE EM
CASA EU TE POSTARIA UNS DOS MEUS CÓDIGOS POIS TENHOS CENTENAS DELES NESTE CASO EU FIZ
UMA PESQUISA RÁPIDA E EMCONTREI ESTE CONTEÚDO AQUI.
_______________________________________________________________________________________
_______________________________________________________________________________________

PRIMEIRAMENTE INCLUA AS SEGUINTES UNITS: EXTCTRLS, STDCTRLS ,INIFILES, WINDOWS, CONTROLS,
FORMS, AS UNITS DB, ADODB, SÃO COLOCADAS AUTOMATICAMENTO PELO DELPHI, LOGO APÓS INCLUIR
AS UNITS, CRIE DUAS VARIÁVEIS GLOBAIS COMO O EXEMPLO ABAIXO:

var

BancoDeDados : String;

ArquivoINI : TIniFile;


ONDE, A VARIÁVEL BANCODEDADOS, SERÁ ONDE GUARDAREMOS O CAMINHO DO BANCO DE DADOS, E A
VARIÁVEL ARQUIVOINI, SERÁ O ARQUIVO Q SERÁ CRIADO PARA O APLICATIVO LÊ O CAMINHO DO
BANCO DE DADOS.


DEPOIS DE INCLUÍDA AS UNITS E CRIADAS AS VARIÁVEIS VAMOS RELIZAR A CONEXÃO, PARTINDO
DO PONTO Q VOCÊ SAIBA CRIAR UMA CONEXÃO COM BANCO DE DADOS ACCESS ATRAVÉS DO ADO,
VAMOS COMEÇAR, PRIMEIRAMENTE, APÓS CRIADO SUA APLICAÇÃO APAGUE A PROPRIEDADE
CONNECTIONSTRING DO SEU ADOCONNECTION, E NO EVENTO ONCREATE DO DATAMODULE DIGITE
O SEGUINTE:




procedure TDM.DataModuleCreate(Sender: TObject);

var i : Integer; ║ variavel para contagem de tabelas, para ativar todas ║

begin

║ a proxima linha o sistema verifica se o arquivo não existe no diretório da aplicação ║

║ caso o arquivo não exista ele o cria ║

if not FileExists(ExtractFilePath(Application.ExeName)+'config.ini') then

begin

║ nesse linha a aplicação cria o arquivo no diretorio dela mesma ║

ArquivoINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'config.ini');

║ na linha seguinte escreve no arquivo o caminho do banco de dados ║

ArquivoINI.WriteString('acesso','banco',(ExtractFilePath(Application.ExeName)+'base.mdb'));

║ na seguinte a variavel criada guarda esses dados ║

BancoDeDados := ArquivoINI.ReadString('acesso','banco','');

║ aqui a propriedade ConnectionStrind do meu ADOConnection recebe essas informações do caminho ║

║ do banco de dados, assim ela pega o caminho que voce apagou como explicado no inicio do artigo ║

acBase.ConnectionString := BancoDeDados;

║ nessa linha ele coloca a ativa sua conexão com o banco ║

acBase.Connected := TRUE;

║ nas linhas seguintes o aplicativo verifica o tipo de componente e se o mesmo for o tipo q desejamos ele ║

║ ele ativa o componente, em nosso caso ele ativa as tabelas ║

for i := 0 to ComponentCount - 1 do

begin

if Components[i] is TADOTable then

(Components[i] as TADOTable).Active := TRUE;

end;

ArquivoINI.Free;

end

║ nas linhas seguintes é caso o arquivo já exista, há aplicação ira simplismente conectar a base de dados e ativar ║

else

try

acBase.ConnectionString := BancoDeDados;

acBase.Connected := TRUE;

for i := 0 to ComponentCount - 1 do

begin

if Components[i] is TADOTable then

(Components[i] as TADOTable).Active := TRUE;

end;

Application.MessageBox('Conexão realizada com sucesso!','CONEXÃO OK');

ArquivoINI.Free;

except

Application.MessageBox('Houve Problemas ao conectar a base de dados!','CONEXÃO FALHOU');

end

end;

DEPOIS DE TUDO ISSO FEITO AINDA FALTA MAIS UMA COISINHA, O QUE FALTA É SEMPRE LÊ O ARQUIVO CRIADO QUE NO CASO É O NOSSO ‘CONFIG.INI’, ASSIM NÃO HÁ PERIGO DO BANCO DE DADOS MUDAR DE CAMINHO E SUA APLICAÇÃO NÃO RODAR, POIS CASO O BANCO MUDE DE CAMINHO, É SÓ INDICAR O CAMINHO NOVO NO ARQUIVO E SALVAR E A APLICAÇÃO SE ENCARREGARÁ DE SE CONECTAR HÁ BASE DE DADOS, PARA FAZERMOS ESSA TAREFA DEVEMOS UTILIZAR O EVENTO ONBEFORECONNECT DO NOSSO ADOCONNECTION, ENTAUM VAMOS VER:


procedure TDM.acBaseBeforeConnect(Sender: TObject);

const

FileName = 'config.ini';

var

vBanco : String;

IniFileName : TIniFile;

begin

IniFileName := TIniFile.Create(ExtractFilePath(ParamStr(0))+FileName);

Try

vBanco := Trim(IniFileName.ReadString('acesso','banco',''));

Finally

IniFileName.Free;

end;

acBase.ConnectionString := vBanco;

end;

PRONTINHO, DEPOIS DE TUDO FEITO CORRETAMENTE SUA APLICAÇÃO TERÁ O BANCO DE DADOS RODANDO EM REDE, LEMBRANDO QUE O EXEMPLO APLICA-SE A OUTROS BANCOS DE DADOS.

ESPERO QUE ISTO POSSA TE AJUDA UM POUCO, SEM MAIS E ATÉ O PROXIMO.

GOSTEI 0
Andre Ucella

Andre Ucella

29/12/2012

Ola, Obrigado pela Dica, mas acabei resolvendo de outra mandeira, atualizei o meu componente IBX para a ultima versão, e utilizei o IbdatabaseIni, mas mesmo assim muito Obrigado.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

29/12/2012

Obrigado por compartilhar a solução.
Estou encerrando o tópico.
GOSTEI 0
POSTAR