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.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009