|
Usuários |
|
116 Usuários Online
|
|
[Artigos]
Conexão ao Interbase e Firebird via ZeoLib |
Publicado por Olifile : Quarta, Maio 03, 2006 - 03:24 GMT-3 (5765 leituras)
comentar Enviar para um amigo Versão para impressão
|
Olá caros amigos e programadores, escreverei aqui um pequeno artigo sobre a conexão das bases de dados Firebired ou Interbase. Para isso usarei o Delphi 2005 e o componente zeolib. Esta ligação será efetuada graças a um mini-programa que ira guardar a localização da base de dados e o domínio do computador local ou em rede no registro do windows. Caso seja local, o domínio será “localhost”, caso seja em rede será o nome ou ip do computador remoto (Recomendo vivamente o uso do ip).
- Vamos então iniciar a concepção do programa que ira guardar nos
registros do Windows
- Abrir um projeto novo.
- Introduza os seguintes componentes:
- 4 Edits
- 4 Labels
- 3 Buttons
- 2 SpeedButtons
- 2 OpenDialogs
- 2 RadioButtons (não obrigatórios)
O essencial é renomear dois dos 4 edits:
Edit1 - Edit1 (colocar a propriedade Visible para False)
Edit2 - Edit2
Edit3 - EdtHost (será para a introdução do domínio)
Edit4 - EdtDB (será para a introdução do caminho da base de dados)
Redimensione os dois SpeedButton para Height=22 e Width=23. A aparência
e parte do funcionamento você pode ver nas figuras abaixo:


Nota: OpenDialog1 será usado para localizar o arquivo da base de dados,
o qual será guardado o caminho para a mesmo no registro do Windows. O OpenDialog2
será usado para localizar o executável da nossa aplicação, para podermos retirar
o nome do software que será usado na criação de uma chave dentro de registro
do Windows.
Vamos passar para os códigos:
-
No evento OnClick do SpeedButton1, vamos colocar este código:
if OpenDialog1.Execute then
begin
EdtDB.Text := OpenDialog1.FileName;
end; -
No evento OnClick do SpeedButton2, vamos colocar este código:
if OpenDialog2.Execute then
begin
Edit2.Text := ExtractFileName(OpenDialog2.FileName);
end;
Ambos os códigos fazem abrir uma caixa de diálogo onde o usuário
irá localizar o arquivo (no primeiro, a base de dados, no segundo, o executável).
Caso o usuário abra algum arquivo, pegamos o caminho deste e o colocamos
na nossa Edit.
- No Button1, no evento OnClick, vamos colocar este código:
EdtDB.Text := '';
EdtHost.Text := '';
Para limpar os Edits. -
No Button2, no evento OnClick, vamos colocar este código,
que será o mais importante, pois será esse que vai analisar
o estado dos campos e salvar os dados no registro.
procedure TForm2.Btn_aplicarClick(Sender: TObject);
var REG : TRegistry;
begin
//entrada dos dados nos registros de dados do windows
if Not ((EdtDB.Text = '') or (Edit2.Text = '') or (EdtHost.Text = '') or (Edit1.Text = '')) then
begin
Try
REG := TRegistry.Create;
REG.RootKey := HKEY_LOCAL_MACHINE;
IF REG.OpenKey('SOFTWARE\Microsoft\Windows\Desyscom\'+copy(Edit2.Text,1,(length(Edit2.Text)-4))+'\', True) THEN
Begin
REG.WriteString('DB_address', EdtDB.Text);
REG.WriteString('HostName', EdtHost.Text);
REG.WriteString('type_network', Edit1.Text);
REG.WriteString(‘namesoft’, Edit2.Text);
end;
finally
REG.Free;
end;
MessageBeep(70);
MessageDlg('Os seu dados foram registrados com sucesso!',mtConfirmation,[mbOK],0);
Halt;
Application.Terminate;
end
else
begin
MessageDlg(‘Deve-se preencher os campos em branco!',mtWarning,[mbOK],0);
end;
end;
Obs: terá que incluir as units Registry e ShellApi no uses:
(Uses Registry, ShellApi) .
Este código verifica inicialmente se os campos estão preenchidos,
caso não esteja mostra uma mensagem de erro: «Deve-se preencher
os campos em branco!». Depois inicia o salvamento dos dados. Inicia
por criar na memória o registo, determinar qual o rootkey (neste caso
HKEY_LOCAL_MACHINE). Verifica se a chave já existe e caso exista, guarda
os dados, caso não exista cria a chave dentro do registo e então
guarda os dados. Finaliza liberando o objeto REG da classe TRegistry da
memória. « REG.Free
;».
-
E por fim no button3 coloque o seguinte código.
Application.Terminate;
Para fechar a aplicação :D
No segundo passo será colocar no seu projeto um código
para que possa ir buscar os dados relativos à base de dados ao registro.
Dentro do seu projeto devera conter um form ou data module onde se inclui
o componente de ligação à base de dados. Nesse form ou
data module, no evento OnCreate, teremos o seguinte código:
procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
HN, endereco, softname : string;
REG : TRegistry;
begin
Try
Try
REG := TRegistry.Create;
REG.RootKey := HKEY_LOCAL_MACHINE;
IF REG.OpenKey(SOFTWARE\Microsoft\Windows\Desyscom\{o}\', True) THEN
Begin
REG.WriteString('Ultima_Entrada', DateTimeToStr(Now));
HN := REG.ReadString('HostName');
endereco := REG.ReadString('DB_Address');
type_network := REG.ReadString('type_network');
softname := REG.ReadString(' namesoft ');
end;
finally
REG.Free;
end;
if HN = '' then
begin
MessageDlg('Erro na Ligação, abra novamento o configurador da base de dados',mtInformation,[mbOK],0);
Halt;
Application.Terminate;
end
else
begin
Ligacao_BD.HostName := '';
Ligacao_BD.HostName := HN;
Ligacao_BD.Database := endereco;
Ligacao_BD.Connect;
Except
MessageDlg('Erro na Ligação, abra novamente o configurador da base de dados',mtInformation,[mbOK],0);
Halt;
Application.Terminate;
end;
end;
Nota: no meu caso usei um data module.
Penso que não exista qualquer dúvida, mas passo a explicar no geral: é criado
na memória a extensão para acessar ao registro do Windows. É definido
então o rootkey. Em seguida, lê-se os valores para as variáveis
e finaliza liberando da memória. Associamos as variáveis ao componente
de ligação à base de dados e pronto! Esta o problema resolvido.
Clique aqui para fazer download do exemplo.
João Filipe Rodrigues Oliveira.
Oliveira de Azeméis - Portugal
Contato: geral@atleta-digital.com
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|