Buscar

Aplicativos com base de dados em rede.

nome

Eneias Carvalho

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

E ai galera, esse é meu primeiro artigo no site, já fui muito beneficiado por este site e resolvi colaborar com o pouco que sei, espero que possa ajudar.

Para começar resolvi escolher um assunto que vejo em fóruns, sites, comunidades, etc, que os desenvolvedores novos e até mesmo mais experientes, têm muitas duvidas, o assunto é sistemas de banco de dados em rede, esse é um assunto muito abrangente, tenho amigos que dizem que chega-se até cada pessoa ter sua própria receita de bolo, venho tratar desse assunto por meio de arquivos “.ini”, esse artigo trata de conexão com banco Access, mais é aplicável a outros bancos, como interbase/firebird, mysql, etc.

Chega de enrrolação vamos ao artigo:

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 q o exemplo aplica-se a outros bancos de dados.

 

Espero ter colaborado, sem mais para o momento.

 

Eneias Carvalho.

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes do artigo

Categoria: Banco de dados
Adicionado dia: 19/09/05
Por: Eneias Carvalho
Visualizado: 40252 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009