Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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 atrs eu ficava me perguntando se o driver Interbase era o adequado para acessar o Firebird e cheguei concluso que est ficando cada vez mais incompatvel 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
dbxdrivers.ini e o dbxconnections.
Obs: Se o artigo for bem aceito pelos os usurios do site farei uma futura publicao sobre a gerao da DLL s Copiando a DLL Aps baixar os arquivos citados acima copie a DLL para a pasta bin do delphi e para a pasta onde esta salva sua aplicao, 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 Cdigo, 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 no quiser alterar e s copiar os ini que esto no downloads. Vamos a pratica: Criando o Banco de Dados no FireBird 1.5 Vamos usar para usar nesse exemplo o ibexpert na sua verso 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.
Ctrl+F9 para copilar e clique em Commit. Criando autoincremental no FireBird Vamos criar um campo autoincremento ainda usando a parte grfica 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 opo AutoIncrement /Generator e marque o checkbox Create Generator e na seo 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 faa o mesmo com a tabela Cidades.
Criando uma aplicao no Delphi 7 Para criar uma nova aplicao no delphi 7 clique no File New Application. No form que e criado altere as seguintes propriedade: Name Caption Position frmCadastro Cadastro com DBExpress e UIB FireBird15 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 no vou explicar todos os recursos do DbExpress isso vai ficar para um prximo artigo.
Adicione ao DM um SQLConnection1, d dois cliques no mesmo para abrir o seu editor clique no boto add Connection, escola o drive UIB FireBird15 e em Connection name coloque planetadelphi que e o nome da nossa conexo e clique em Ok.
Configure as propriedades como na figura acima e clique no boto Test Connection. A figura abaixo mostrar o erro que o sistema vai apresentar se no estiver a DLL fbclient.dll na pasta do seu programa copie a mesma para a pasta onde esto as suas fontes e pronto conexo realizada, clique em ok.
Altere as seguintes propriedades no Objector Inspector, Login Prompt = False e Connected = True.
Obs: Em alguns casos e aconselhvel abrir a conexo sobre demanda, mais nesse exemplo no 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 no ser mais solicitados na hora de confirmar um registro j que o mesmo vai ser gerado (autoincrementados) usando a rotina acima.
DataSetProvider1 dataset Name ClientDataSet1 Providername Name Active Adicione todos os campos como no sdsClientes. DataSource DataSet Name cdsClientes dsClientes dspClientes cdsClientes True sdsClientes dspClientes
Agora faa 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 aplicao 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 opo 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 memria e quando voc usa o post para gravar ele e salvo na memria, os dados s so gravados no banco, com o comando applyUpdates. Ento no evento onclick do boto digite: dm.cdsClientes.ApplyUpdates(0); dm.cdsClientes.refresh; // atualiza os dados no clientdataset
Obs: Os clientdatasets esto fechados e aconselhvel 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 ligao 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 Srgio de Castro Guedes Analista da Mais Sistemas inteligentes Sergio_work2@hotmail.com