7
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

Cadastro Em FireBird Usando o Driver UIB FireBird15

Embed Size (px)

Citation preview

Page 1: Cadastro Em FireBird Usando o Driver UIB FireBird15

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 InterBaseO 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 sCopiando a DLLApó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=1Apos, adicione o seguinte Código, logo abaixo do último driver:[UIB FireBird15]GetDriverFunc=getSQLDriverINTERBASELibraryName=dbexpUIBfire15.dllVendorLib=fbclient.dllBlobSize=-1CommitRetain=FalseDatabase=database.fdbErrorResourceFile=LocaleCode=0000Password=masterkeyRoleName=RoleNameServerCharSet=SQLDialect=3Interbase TransIsolation=ReadCommitedUser_Name=SYSDBAWaitOnLocks=TrueSe 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.5Vamos usar para usar nesse exemplo o ibexpert na sua versão free.http://www.ibexpert.com/download.phpVá ao menu DataBase / Create DataBase.Server= LocalDataBase = C:\ planetadelphi.fdb– Local onde vai ser criado o banco

Page 2: Cadastro Em FireBird Usando o Driver UIB FireBird15

Client Library File =  C:\Arquivos de programas\Firebird\Firebird_1_5\bin\fbclient.dllUsername = SYSDBAPassWord = masterkeyCharSet = WIN1252SQL Dialect = Dialect 3De um clique em ok, espero abrir a janela Database Registration.Server Sersion = Firebird 1.5DataBase Alias = planetadelphiClient Library File = C:\Arquivos de programas\Firebird\Firebird_1_5\bin\fbclient.dllOs 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 tabelaNEW_FIELD = Nome do campoVamos criar duas tabelas Clientes e Cidades.Clientes

Campos Tipo de campo DescriçãoId_cli Intenger Código da tabela clientes PK Chave

PrimariaNomCli Varchar(35) Campo Nome do ClienteId_Cid Intenger Código de ligação a tabela Cidade

CidadesCampos Tipo de campo DescriçãoId_cid Intenger Código da tabela Cidades PK

Chave PrimariaNomCid Varchar(35) Campo Nome da Cidade

Ctrl+F9 para copilar e clique em Commit.Criando autoincremental no FireBirdVamos 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 CLIENTESACTIVE BEFORE INSERT POSITION 0ASBEGIN  IF (NEW.ID_CLI IS NULL) THEN    NEW.ID_CLI = GEN_ID(GEN_CLIENTES_ID,1);ENDPronto agora faça o mesmo com a tabela Cidades.

Page 3: Cadastro Em FireBird Usando o Driver UIB FireBird15

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

Name frmCadastroCaption Cadastro com DBExpress e UIB FireBird15Position 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.

Page 4: Cadastro Em FireBird Usando o Driver UIB FireBird15

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 =  SQLConnection1Name = sdsClientesCommandText = select * from CLIENTESActive = TrueDê 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.

Page 5: Cadastro Em FireBird Usando o Driver UIB FireBird15

DataSetProvider1dataset sdsClientesName dspClientes

ClientDataSet1Providername dspClientesName cdsClientesActive True

Adicione todos os campos como no sdsClientes.DataSource

DataSet cdsClientesName dsClientes

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

Criando a tela de Cadastro de ClientesAbra 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

Page 6: Cadastro Em FireBird Usando o Driver UIB FireBird15

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 estrangeiralist 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.DownloadSérgio de Castro GuedesAnalista da Mais Sistemas [email protected]