Buscar

Firbird 1.5 edbexpress

nome

Sérgio

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Cadastro em FireBird usando o driver UIB FireBird15.
Olá amigos do Planeta Delphi e um prazer poder colaborar com esse brilhante site com artigos semanais,
nesse meu primeiro artigo vou explicar um pouco sobre o FireBird 1.5 fazendo um cadastro simples, e
vamos conhecer o driver DBexpress especifico para o Fb.
Até certo tempo atrás eu ficava me perguntando se o driver Interbase era o adequado para acessar o
 Firebird e cheguei à 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 especifico para acesso ao firebird.
Unified InterBase
O UIB (Unified InterBase) que produzia somente componentes de acesso a dados, agora possui um
driver free para acesso a tecnologia dbExpress para Firebird, InterBase e Yaffil. Acesse o site
www.progdigy.com para saber mais sobre o produto.
No site vc pode baixar somente os fontes da DLL vc tem que copilar e gerar a mesma, mais para
 facilitar esse nosso artigo vou disponibilizar a DLL (dbexpUIBfire15.dll), e os arquivos
 dbxdrivers.ini e o dbxconnections.
Obs: Se o artigo for bem aceito pelos os usuários do site farei uma futura publicação
sobre a geração da DLL s
Copiando a DLL
Após baixar os arquivos citados acima copie a DLL para a pasta bin do delphi e para a
pasta onde esta salva sua aplicação, e os ini para a pasta
 C:\Arquivos de programas\Arquivos comuns\Borland Shared\DBExpress abra
o arquivo dbxdrivers.ini e abaixo da chave Installed Drivers adicione:
Exemplo do dbxdrivers.ini modificado.
 
Installed Drivers]
...
UIB FireBird15=1
Apos, adicione o seguinte Código, logo abaixo do ú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
Se não quiser alterar e só copiar os ini que estão no downloads.
Vamos a pratica:
Criando o Banco de Dados no FireBird 1.5
Vamos usar para usar nesse exemplo o ibexpert na sua versão free.
http://www.ibexpert.com/download.php
Vá ao menu DataBase / Create DataBase.
Server= Local
DataBase = C:\ planetadelphi.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, espero abrir a janela Database Registration.
Server Sersion = Firebird 1.5
DataBase Alias = planetadelphi
Client Library File = C:\Arquivos de programas\Firebird\Firebird_1_5\bin\fbclient.dll
Os restos dos campos já vêm preenchidos, podemos agora clicar em Testar Conexão e clicar
 em OK, observe que em database explore apareceu o nosso banco planetadelphi dê dois
clique nele para conectar, ou vá ao menu DataBase até Connect to DataBase.
Bom agora só nos resta criar ao tabelas, clique o botão direito em tables / new table.
NEW_TABLE = Nome da tabela
NEW_FIELD = Nome do campo
Vamos criar duas tabelas Clientes e Cidades.
Clientes

Campos
Tipo de campo
Descrição
Id_cli
Intenger
Código da tabela clientes PK Chave Primaria
NomCli
Varchar(35)
Campo Nome do Cliente
Id_Cid
Intenger
Código de ligação a tabela Cidade
Cidades
Campos
Tipo de campo
Descrição
Id_cid
Intenger
Código da tabela Cidades PK Chave Primaria
NomCid
Varchar(35)
Campo Nome da Cidade
Ctrl+F9 para copilar e clique em Commit.
Criando autoincremental no FireBird
Vamos criar um campo autoincremento 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 vá 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
Pronto agora faça o mesmo com a tabela Cidades.

Criando uma aplicação no Delphi 7
Para criar uma nova aplicação no delphi 7 clique no File – New – Application.
No form que e criado altere as seguintes propriedade:

Name
frmCadastro
Caption
Cadastro com DBExpress e UIB FireBird15
Position
poScreenCenter
Crie agora um DataModule e mude seu name para DM e salve a sua unit como
untDm, salve a unit1 como untCadastro e nome do projeto como UIBFireBird15.
Vamos usar como já foi citada a paleta dbexpress apresentando o driver UIB FireBird15.
Obs: Nesse artigo não vou explicar todos os recursos do DbExpress isso vai
ficar para um próximo artigo.

Adicione ao DM um SQLConnection1, dê dois cliques no mesmo para abrir o seu
editor clique no botão add Connection, escola o drive UIB FireBird15 e em
Connection name coloque planetadelphi que e o nome da nossa conexão e clique em Ok.

Configure as propriedades como na figura acima e clique no botão Test Connection.
A figura abaixo mostrar o erro que o sistema vai apresentar se não estiver a
DLL fbclient.dll na pasta do seu programa copie a mesma para a pasta onde
estão as suas fontes e pronto conexão realizada, clique em ok.

Altere as seguintes propriedades no Objector Inspector,
Login Prompt = False e Connected = True.
Obs: Em alguns casos e aconselhável abrir a conexão sobre demanda, mais
nesse exemplo não vamos entra em detalhe sobre essa parte.
Insira agora um SQLDataSet1 + DataSetProvider1 + ClientDataSet1 + DataSource1,
vamos configurá-los.
 
SQLDataSet1
 
SqlConnection =  SQLConnection1
Name = sdsClientes
CommandText = select * from CLIENTES
Active = True
Dê dois clique no sdsClientes e aperte ctrl+F para adicionar todos os fields no editor.
Uma coisa importante a ser lembrada e que o campo ID_CLI tem que esta com a sua
 propriedade Required  = False, depois vá em ProviderFlags e coloque pflnUpdate = False
 pronto agora esses campos não ser mais solicitados na hora de confirmar um registro
 já que o mesmo vai ser gerado (autoincrementados) usando a rotina acima.

DataSetProvider1
dataset
sdsClientes
Name
dspClientes
ClientDataSet1
Providername
dspClientes
Name
cdsClientes
Active
True
Adicione todos os campos como no sdsClientes.
DataSource

DataSet
cdsClientes
Name
dsClientes
Agora faça o mesmo processo para a tabela de Cidades com na figura abaixo:

Criando a tela de Cadastro de Clientes
Abra o editor de campos do cdsClientes e araste todos os campos
para o Form frmCadastro.
Adicione um DBNavigator da paleta (DataControls) e um Button da paleta
(Standard), altere as seguintes propriedades do DbNavigator - DataSource
para dm.dsClientes.
Se você rodar a aplicação vai ver que está funcionado corretamente se der 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 no banco.
No clientdataset os dados ficam em memória e quando você usa o post para gravar ele
e salvo na memória, os dados só são gravados no banco, com o comando applyUpdates.
Então no evento onclick do botão digite:
dm.cdsClientes.ApplyUpdates(0);
dm.cdsClientes.refresh;  //  atualiza os dados no clientdataset

Crie também o form de Cadastro de Cidades: FrmCidades untCidades.
 

 
Obs: Os clientdataset’s estão fechados e aconselhável que você abre os mesmos ao
criar o datamodule ou quando você criar o form referente ao clientdataset.
Lembretes:
1° - Como obter acesso a uma unit ?
ALT + F11.
2º - Como ligar o DBLookupComboBox para trazer as cidades no cadastro do cliente ?
Use as seguintes propriedades do mesmo:
datasource : tabela principal
datafield: campo de ligação entre as duas tatelas  - Chave estrangeira
list source: outra tabela a ser usada
datafied: campo a ser monstrado no DBLookupComboBox.
keyfield: chave primaria da tabela a ser usada..
Por essa semana e só pessoal para mais detalhe baixe o exemplo no link abaixo.
Se estiver alguma duvida entre em contato comigo pelo e-mail abaixo.
Download
Sérgio de Castro Guedes
Analista da Mais Sistemas inteligentes
Sergio_work2@hotmail.com

 

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes do artigo

Categoria: Banco de dados
Adicionado dia: 24/05/06
Por: Sérgio
Visualizado: 60654 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009