Vamos mostrar duas maneiras de acessar Firebird no Lazarus. Uma usando os componentes nativos SQLdb e outra usando ZeosLib. Já fizemos aqui alguns exemplos e a construção da interface não será mais tratada. Apresentaremos apenas os passos necessários no Data Module. Usaremos a versão 0.9.29 do Lazarus.
Antes de iniciar é importante ter conhecimento da versão do Firebird, principalmente para o caso de usar ZeosLib. Crie o banco dados. Vamos usar o mesmo banco usado em artigos anteriores.
create table cidade (id_cidade integer not null primary key, nome varchar(30));
create table cliente (id_cliente integer not null primary key, nome varchar(40), endereco varchar(40), id_cidade integer references cidade(id_cidade), telefone varchar(14), tipo char(1));
Diferente do PG, no Firebird você pode ter um arquivo de banco em qualquer diretório que você queira, desde que seja na máquina local onde está instalado o servidor FB.
Usando SQLdb
Selecione a aba SQLdb e coloque no Data Module um TIBConnection. Ele que fará a conexão com o banco. Defina então as seguintes propriedades:
DatabaseName - informe o arquivo do banco de dados com o caminho completo.
HostName - informe o nome ou o IP do servidor de banco de dados.
Name - informe um nome para a conexão. Por exemplo: dbCliente.
Password - informe a senha do usuário. Normalmente é masterkey.
UserName - informe o nome do usuário. Normalmente é sysdba.
Coloque agora um TSQLTransaction e selecione dbCliente na propriedade Database, e na propriedade Name digite trGeral, por exemplo.
Volte ao TIBConnection e informe trGeral na propriedade Transaction. Coloque a propriedade Connected em True para verificar se a conexão é feita. Depois volte para False.
Coloque um TSQLQuery no Data Module e defina suas propriedades:
Database - selecione dbCliente.
Name - defina queCidade.
SQL - informe SELECT * FROM CIDADE.
Transaction - selecione trGeral.
Coloque agora um TDataSource da aba Data Access e mude Name para dsCidade e em DataSet selecione queCidade.
No evento AfterPost de queCidade digite o código:
queCidade.ApplyUpdates;
trGeral.CommitRetaining;
No evento AfterDelete selecione o mesmo método para não repetir código.
Pronto. Está feita a configuração de acesso, tanto para leitura quanto para escrita, em uma tabela FB. Assim como nos exemplos anteriores lembre-se de conectar e desconectar o banco de dados através de código.
Usando ZeosLib
Usaremos a versão 7.0 do ZeosLib disponível no grupo Lazarus-BR. Coloque um TZConnection no Data Module. Defina as propriedades:
Database - informe o arquivo do banco com o caminho completo.
HostName - informe o nome ou IP do servidor do banco. Para máquina local informe localhost.
Name - digite dbCliente.
Password - informe a senha do usuário. Geralmente masterkey.
Protocol - informe firebird-xx. Observe a versão do FB que você está usando.
User - informe sysdba.
Mude Connected para True. No Windows se ocorrer um erro de dll, localize a mesma na pasta do FB e copie-a para system32 do Windows. Depois de conectar com sucesso volte Connected para False.
Coloque um TZQuery e um TZUpdateSQL e configure-os como foi feito no artigo Lazarus - Conectando PostegreSQL com ZeosLib.
Coloque um TDataSource da aba Data Access e defina Name como dsCidade e em DataSet selecione a TZQuery anterior. Ai está. Agora crie a interface com nos posts anteriores.
15 Comentários
Valdirene
Aparentemente é nesta linha:
procedure TDBEdit.KeyPress(var Key: char);
function CanAcceptKey: boolean;
begin
Result := Field.IsValidChar(Key) and
(Field.DataType<>ftAutoInc);
end;
var
SavedKey: Char;
Eu quero que o formulário vá aumentando a numeração, ex: 01,02,03...). Mas na hora em que tento gravar dá um erro no lazarus.
Código da trigger:
Insert as
begin
if (new.id_cidades is null) then
new.id_cidades = gen_id(gen_cidades_id,1);
end
I have a blog with a clear tutorial to make an application with Lazarus+Zeos+Sqlite.
The link is this:
http://lazaruszeos.blogspot.com/
I hope it will be usefull
Começei montar um programa com lazarus e usei o ibexplex, fiz a conecção igual seu tutoail e funcionol, só que tem um problema, eu fiz uma chave estrangeira na tabela imprestimo de livro , liguei id livro ao campo livro emprestado, ai como faço para na hora de cadastrar um emprestimo ele puxar o livro da tabela livro?
tipo no meu serviço é em delphi quando vc vai cadastar um produto por exemplo vc aperta tab no campo e aparece uma lsita com todos produtos, ñ tou conseguindo fazer essa ligação no lazarus.
Tem alguma dica?
t+++
e aí o componente não é instalado.
Eu estou usando a versão 0.9.31 do lázarus.
Obrigada
Lidiane
Olá tudo bem
Estou usando Lazarus,Zeus, Firibird
No windows Xp esta conectando mas no win 7 não conecta ao banco ja setei varias biblio mas todas diz que tem incompatibilidade o senhor teria alg