Nesse artigo vou explicar um pouco sobre o Firebird, fazendo um cadastro simples, e vamos conhecer o driver DBexpress específico para o FB.
Até um certo tempo atrás ficava me perguntando se o driver Interbase era o adequado para acessar o Firebird e cheguei a conclusão que está ficando cada vez mais incompatível usar driver do InterBase para acesso ao Firebird com dbExpress.
Andei pesquisando e encontrei um driver específico para acesso ao firebird...
Unified InterBase
O UIB (Unified InterBase) que produzia somente componentes de acesso a dados, agora possui um driver free para
a tecnologia dbExpress, podendo acessar os bancos Firebird, InterBase e Yaffil. Acesse o site
http://www.progdigy.com para saber mais sobre o produto.
No site você pode baixar somente os fontes da DLL para compilar e gerar a mesma. Mas para facilitar, deixo disponível a DLL (dbexpUIBfire15.dll), e os arquivos dbxdrivers.ini e o dbxconnections junto com o arquivo de exemplo (veja o link no final do artigo).
Na edição 23 da revista Active Delphi há uma matéria do Manoel Campos, que detalha mais sobre a geração dessa DLL.
Copiando a DLL
Após baixar os arquivos citados acima copie a DLL para a pasta bin do delphi. Além disso, copie os arquivos ini para a pasta "C:\Arquivos de programas\Arquivos comuns\Borland Shared\DBExpress" ou abra o arquivo dbxdrivers.ini desta pasta, e faça as alterações citadas abaixo:
[Installed Drivers]
...
UIB FireBird15=1
Após isso, adicione o seguinte Código logo abaixo ao último driver:
[UIB FireBird15]
GetDriverFunc=getSQLDriverINTERBASE
LibraryName=dbexpUIBfire15.dll
VendorLib=fbclient.dll
BlobSize=-1
CommitRetain=False
Database=database.fdb
ErrorResourceFile=
LocaleCode=0000
Password=masterkey
RoleName=RoleName
ServerCharSet=
SQLDialect=3
Interbase TransIsolation=ReadCommited
User_Name=SYSDBA
WaitOnLocks=True
Nota: Se não quiser alterar, é só copiar os ini que estão no exemplo.
Vamos a pratica.
Criando o Banco de Dados no FireBird 1.5
Vamos usar para criar o banco nesse exemplo o ibexpert na sua versão free. Para maiores informações sobre a ferramenta, visite
sua página em http://www.ibexpert.com
No IBExpert, vá ao menu DataBase / Create DataBase.
|
Propriedade
|
Valor
|
|
Server
|
Local
|
|
DataBase
|
C:\Activedelphi.fdb – Local onde vai ser criado o
banco
|
|
Client Library File
|
C:\Arquivos de programas\Firebird\Firebird_1_5\bin\fbclient.dll
|
|
Username
|
SYSDBA
|
|
PassWord
|
masterkey
|
|
CharSet
|
WIN1252
|
|
SQL Dialect
|
Dialect 3
|
De um clique em ok e espere abrir a janela Database Registration. Nela, mude as seguintes propriedades:
|
Propriedade
|
Valor
|
|
Server Session
|
Firebird 1.5
|
|
DataBase Alias
|
ActiveDelphi
|
|
Client Library File
|
C:\Arquivos de programas\Firebird\Firebird_1_5\bin\fbclient.dll
|
O restante das propriedades já vêm preenchidas. Podemos agora clicar em Testar Conexão e clicar em OK.
Observe que em database explore apareceu o nosso banco Activedelphi. Dê dois cliques nele para se conectar, ou vá ao menu DataBase, Connect to DataBase.

Figura 1. Banco de Dados criado
Bom agora só nos resta criar as tabelas. Para isso, clique com o botão direito em tables / new
table. Vamos criar duas tabelas: Clientes e Cidades.
Clientes

Figura 2. Tabela de Clientes.
Cidades

Figura 3. Tabela de Cidades.
Ctrl+F9 para compilar e clique em Commit.
Criando campo auto-incremental
Vamos criar um campo auto-incremento ainda usando a parte gráfica do ibexpert. No DataBase Explorer clique sobre a tabela Clientes e use CTRL + O para editar a tabela.
Agora dê um duplo clique no campo id_cli, na janela edit field idcli va na opção AutoIncrement /Generator e marque o checkbox Create Generator, e na seção Trigger, Create Trigger.
Exemplo da generator e trigger criada:
CREATE GENERATOR GEN_CLIENTES_ID;
CREATE TRIGGER CLIENTES_BI FOR CLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID_CLI IS NULL) THEN
NEW.ID_CLI = GEN_ID(GEN_CLIENTES_ID,1);
END
Faça o mesmo com a tabela Cidades.
Criando a aplicação no Delphi 7
Abra o delphi e no form que é criado, altere as seguintes propriedades:
|
Propriedade
|
Valor
|
|
Name
|
frmCadastro
|
|
Caption
|
Cadastro com DBExpress e UIB FireBird15
|
|
Position
|
poScreenCenter
|
Crie agora um DataModule e mude seu name para DM. Salve a sua unit como untDm e salve a unit1 como untCadastro. Para o nome do projeto use, por exemplo UIBFireBird15.
Como já foi citado, vamos usar a paleta dbexpress, apresentando o driver UIB FireBird15.

Figura 4. Palheta de componentes DBExpress
Adicione ao DM um SQLConnection1 e dê dois cliques no mesmo para abrir o seu editor de conexões. Clique no botão Add Connection, escolha UIB FireBird15 e em Connection Name, coloque Activedelphi. Clique em Ok.
Criada a conexão, configure as propriedades como na figura abaixo e clique no botão Test
Connection.

Figura 5. Tela de configuração de conexões
A figura abaixo mostra o erro que o sistema vai apresentar se não estiver a DLL fbclient.dll na pasta do seu programa ou na pasta do systema. Caso veja este erro, copie a dll para a pasta onde estão os fontes e pronto! Conexão realizada.

Figura 6. Possível erro causado pela não existencia da dll.
Altere as seguintes propriedades do SQLConnection, no Object Inspector:
Login Prompt = False
Connected = True
Insira agora um SQLDataSet1, um DataSetProvider1, um ClientDataSet1 e um DataSource1, configurando-os conforme segue:
SQLDataSet1
SqlConnection = SQLConnection1
Name = sdsClientes
CommandText = select * from CLIENTES
Active = False
Dê dois cliques no sdsClientes e aperte CTRL+F para adicionar todos os fields no editor.
Uma coisa importante a ser lembrada é que o campo ID_CLI tem que estar com a sua propriedade Required = False, para que o Provider não exija que este esteja preenchido. Depois vá em ProviderFlags e coloque pflnUpdate = False, para que este campo não seja atualizado. Isso porque seu valor será gerado automaticamente pelo banco de dados.
DataSetProvider1
Propriedade = Valor
dataset = sdsClientes
Name = dspClientes
ClientDataSet1
Propriedade = Valor
Providername = dspClientes
Name = cdsClientes
Active = True
Adicione todos os campos como no sdsClientes.
DataSource
Propriedade = Valor
DataSet = cdsClientes
Name = dsClientes
Agora faça o mesmo processo para a tabela de Cidades, para que o resultado fique como
na figura abaixo:

Figura 7. DataModule Pronto.
Criando a tela de Cadastro de Clientes
Peça um novo form e no chame o datamodule. Abra o editor de campos do cdsClientes e araste todos os campos para o novo
Form, que chamarei de frmCadastro.
Adicione um DBNavigator da palheta (DataControls) e um Button da paleta (Standard), altere a propriedade DataSource do DbNavigator para
dm.dsClientes.
Se rodar a aplicação verá que está funcionado corretamente. Caso dê algum erro revise os passos acima.
Obs: E importante lembrar que tem que deixar em False a opção required do campos chaves das tabelas.
Prontinho! Agora só falta dar um.ApplyUpdates(0); para gravar esse dados fisicamente no banco. Para isso, no evento onclick do botão digite:
dm.cdsClientes.ApplyUpdates(0);
dm.cdsClientes.refresh;

Figura 8. Tela de cadastro de Clientes.
Crie também um form de Cadastro de Cidades (FrmCidades - untCidades):

Figura 9. Tela de cadastro de Cidades.
E é só pessoal.Clique no link abaixo e faça o download do exemplo.
Se tiver alguma dúvida, entre em contato pelo e-mail abaixo.
Sérgio de Castro Guedes -
sergio_rj45@yahoo.com.br
Clique aqui para fazer o download do exemplo.
|