Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 12 de Junho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
82 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Firebird com DBExpress específico para Firebird
Publicado por ActiveDelphi : Segunda, Junho 05, 2006 - 08:45 GMT-3 (40567 leituras)
Comentários 19 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Sérgio Guedes 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.



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: edgar_oliveira : Jun 08, 2006 - 12:08
(Informações sobre o membro | Enviar uma mensagem)
Olá Sergio artigo bonzinho, tenho uma duvida, eu utilizo sempre ApplyUpdates(-1) por que você utilizou com 0 (zero)?


por: jeffersonciotti : Ago 02, 2006 - 07:16
(Informações sobre o membro | Enviar uma mensagem)
Cara sem comentarios parabens , tive um pouco de dificuldade pois apesar de saber programar tenho dificuldades com triggers agora estou pegando bem a nocao valeu sergio, se tiver mais exemplos posta ai . forte abraco@


por: piubello (piubelloarrobapiubellopontoetipontobr) : Ago 29, 2006 - 05:12
(Informações sobre o membro | Enviar uma mensagem) http://
Olá Sérgio!

Seu artigo me ajudou muito, segui os passo que você desreveu e agoara o UIB Firebird está instalado para o Delphi 2006.

A única coisa que não funciona é o Data Explorer, pois ele permite que se configure a conexão, mas dá erro ao tentar acessar.

Se você tiver alguma luz, me será de grande ajuda.


por: afmello : Ago 30, 2006 - 12:10
(Informações sobre o membro | Enviar uma mensagem) http://http://
Sérgio,

Não estou conseguindo gravar informações com acento em campos varchar. Nem no seu exemplo eu consegui. Tem alguma idéia do que possa estar acontecendo.

Saudações,

Alexandre Mello


por: jesusuff : Out 16, 2006 - 10:27
(Informações sobre o membro | Enviar uma mensagem) http://http://
Bom dia, Sérgio.

O artigo está ótimo, muito elucidativo. Parabéns.
Infelizmente estou tendo problemas com o componente SQLConnection. Vou explicar o meu cenário:
Tenho um servidor Firebird 1.5. O acesso local funciona que é uma beleza. Mas eu preciso que clientes WinXP acessem este servidor.
Já tive alguns problemas de conexão antes. Mas descobri que liberando o acesso à porta 3050 a conexão se torna possível. Tanto isto é verdade que consegui acessar o servidor através de um drive ODBC. O problema é quando tento acessar usando um componente SQLConnection. Eu consigo acesso local, mas pela rede nem com reza brava. As propriedades do SQLConnection que estou usando são as seguintes:

DriverName - UIB FireBird15
GetDriverFunc - getSQLDriverINTERBASE
LibraryName - dbexpUIBfire15.dll
Params.Database - 10.10.10.10:D:\Acesso_Firebird\TESTE.FDB
Params.Password - masterkey
Params.SQLDialect - 3
Params.User_Name - SYSDBA

Quando compilo no Delphi, funciona muito bem localmente, embora eu informe o Database com o IP e o path no servidor (10.10.10.10:D:\Acesso_Firebird\TESTE.FDB e não localhost:D:\Acesso_Firebird\TESTE.FDB). Quando levo este executável para o cliente, não roda. E o pior é que este mesmo cliente acessa o mesmo banco através de um driver ODBC.
Em tempo informo que está na mesma pasta do executável o arquivo fbclient.dll. Lá está também o arquivo gds32.dll, que nem era preciso, mas coloquei lá por não saber mais o que fazer.
Também já usei o arquivo de instalação do Firebird 1.5 para instalar o cliente do Firebird na máquina cliente, escolhendo a opção Instalação mínima do cliente - sem servidor, sem ferramentas.


por: xxrenan : Out 23, 2006 - 05:51
(Informações sobre o membro | Enviar uma mensagem)
Realmente muito com o seu passo a passo, estou tentando migrar do paradox para o firebird e isso foi de grande ajuda, mas pelo q eu vi essa aplicação nao funcionará em rede neh? vc teria algum exemplo para o funcionamente em rede?
ou de repente alguma dica interessante ai...
vlw...
parabensss!!!


por: xxrenan : Out 25, 2006 - 10:54
(Informações sobre o membro | Enviar uma mensagem)
O meu banco ta funcionando normalmente, a única coisa que não está acontecendo eh o campo codigo ser auto incrementado...
coloquei a configuração no banco e as configuraçãoe nos campos da tabela tb..
alguem pode dar a luz ai?


por: andresantos78 : Dez 15, 2006 - 10:31
(Informações sobre o membro | Enviar uma mensagem)
Olá Sérgio,

Teria como você ensinar a gerar a dll.. baixei os fontes e gerei a dll, mais quando fui testar deu erro no metodo getSQLDriverINTERBASE...


Att,

André Geraldo dos Santos


por: fotosvcd : Jan 04, 2007 - 09:26
(Informações sobre o membro | Enviar uma mensagem) http://
Estou migrando do paradox para o firebird e estava muito perdido, até encontrar este artigo, muito obrigado e parabéns pela simplicidade.


por: diogogretter : Jan 05, 2007 - 03:31
(Informações sobre o membro | Enviar uma mensagem)
ha muito tempo trabalhando com paradox, este artigo elucidou muito meus conhecimentos, devido ao detalham,ento.

seguindo o exemplo tive alguns problemas:

ACENTOS: MAS CORRIGI COM A INCLUSAO DO SERVERCHAR NO SQLCONNECTION 'WIN1252'

NAO GRAVAVAO ID_CID OU DEVA REQUIRED FIELD: CORRIGI SEGUINDO A ORDEM EXATAMENTE.

NOTEI QUE FALTAM ARTIGOS SOBRE BUSCAS E PESQUISAS NO FORUM, SE PUDER COLABORAR!


por: kukkaz : Fev 14, 2007 - 03:02
(Informações sobre o membro | Enviar uma mensagem)
Parabens Cara!
Perfeito! Vc acendeu a luz da escuridão!
parabens pela iniciativa!
abraço


por: mindcabral : Fev 24, 2007 - 01:12
(Informações sobre o membro | Enviar uma mensagem) http://
Seu artigo realmente é muito bom. Mas tenho uma dúvida: é necessário levar para o computador do usuário os arquivos .INI que você trata neste artigo? Quais arquivos especificamente irão acompanhar a aplicação final, instalada no usuário? Pergunto porque a chave do arquivo .INI password=masterkey mostra a senha do BD. E se eu quiser usar outra senha para o BD?

Valeu mesmo! Parabéns.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados