Buscar

Trabalhando com View

nome

Rubens Antunes

Rubens Antunes, Autor do Livro Delphi Faça uma Aplicação Comercial e Desenvolvedor Delphi desde de 2004.

TRABALHANDO COM VIEW

Para nós que trabalhamos com desenvolvimento de sistemas e administração de dados diretos, sabe o quanto é deprimente ter que escrever e reescrever determinadas consultas todos os dias ou mesmo mais de uma vez no mesmo dia. Muitas destas consultas são derivadas de várias tabelas o que nos dá um re-trabalho ao montar todos aqueles join's, utilizar esse ou aquele índice para esta ou aquela tabela para que também a performance de tal consulta tenha um tempo razoavelmente atraente.

Com View podemos fazer consultas robustas e simples, e deixá-las prontas, para quando precisarmos, sem a necessidade de termos que repetir selects, algo muito interessante. Podemos unir várias tabelas, e utilizar apenas os campos que gostaríamos.

Neste artigo irei utilizar o banco de dados firebird junto com a ferramenta ibexpert, você pode fazer o donwload na página www.firebase.com.br para o firebird e www.ibexpert.com para o Ibexpert.

Obs.: Caso você já conheça o banco de dados firebird você pode passar direto para a página 3 a onde começar a falar o que é view, é claro que você precisa saber quais são as tabelas e os campos utilizados em nossa view.

Criando o Banco de Dados

Vamos criar o nosso Banco de dados, primeiro crie uma pasta Chamada SA, agora entre no IbExpert e clique no botão Create Database e preencha a tela que se abre de acordo com a tela a seguir:


O Password é: masterkey

Clique em OK, e o nosso banco está criado, mas precisamos registrar o banco de dados no Ibexpert, na tela que se abre, preencha de acordo com a tela a seguir:


Clique em Ok.

Criando as tabelas

Selecione a opção Tables no Database Explorer e tecle Ctrl + N e preecha a tela de acordo com a tela a seguir:


Criando a tabela de Cliente

Crie as outras tabelas de acordo com as telas a seguir:


Tabela de Produto


Tabela de Pedido


Tabela de Itens

Coloque registros nas tabelas, para que possamos ter um entendimento melhor.

O que é View?

São objetos que pertencem a um banco de dados, definida por declarações de Selects, ou seja, view é uma visão de uma ou mais tabelas, com todos ou alguns campos de determinadas tabelas.

Vantagens de se criar View

  • Uma view pode ser utilizada, por exemplo, para retornar um valor baseado em um identificador de registro.

  • Aumentar a segurança dos mesmos e definir políticas de acesso em nível de tabela e coluna. podem ser configurados para mostrar colunas diferentes para diferentes usuários do banco de dados.

  • Pode ser utilizada com um conjunto de tabelas que podem ser unidas a outros conjuntos de tabelas com a utilização de join’s ou union.


Criando View

Vamos enfim criar a nossa primeira view, para isso selecione no Database Explorer a opção View e tecle Ctrl + N.

Nesta View iremos selecionar todos os pedidos de acordo com a data do dia de hoje, ou seja, queremos saber quais são os pedidos do dia de hoje. Coloque a seguinte instrução na tela que se abre:

CREATE VIEW DATAPEDIDO(
    IDPEDIDO,
    IDCLIENTE,
    VALOR,
    DATA)
AS
select IDPEDIDO, IDCLIENTE, VALOR, data FROM PEDIDO
Where data = current_date
;

Clique no botão Compile e na tela que se abre clique em commit, logo depois escolha a opção Data e perceba que ele selecionou todos os pedidos com a data de hoje.

Ou seja, ele criou uma view da tabela pedido só com estes dados, o Delphi entendi uma view como um DataSet, assim podemos pegar todos estes dados.

Lendo uma View no Delphi

Crie uma nova Aplicação no Delphi e salve-a na nossa pasta SA, Adicione no nosso formulário um SqlConnection da paleta DBExpress, crie uma nova conexão,eu estou utilizando o Delphi 2010, já possui um drive nativo para o Firebird. na propriedade ConnectionName coloque o nome da conexão.

Adicione então um SqlDataSet da paleta DbExpress e mude a propriedade SqlConnection para o nome do componente SqlConnection, colocado anteriormente. Dê um clique na propriedade CommandText e abrirá a seguinte tela:



Podemos perceber que a nossa view DATAPEDIDO, está lá com as nossas tabelas. Coloque a seguinte instrução Sql: Select * from DATAPEDIDO e dê OK.

Adicione em nosso formulário um DataSetProvider da Paleta Data Access e mude a propriedade DataSet parta SqldataSet1, depois coloque um ClientDataSet da paleta Data Access também e mude a propriedade ProviderName para DataSetProvider1, coloque enfim um DataSource da paleta Data Access e mude a propriedade Dataset para ClientDataSet1 e um DbGrid e mude a propriedade DataSource para DataSource1.

Selecione o componente ClientDataSet e mude a propriedade Active dele para True e execute a aplicação e veja como ficou nosso dbGrid na figura a seguir:



Mas seria interessante se pudéssemos saber o nome do cliente e não o código, retorne então no IbExpert e vamos fazer essa alteração.

Uma view não pode ser alterada no Firebird, por isso recorte a instrução SQL e feche a view logo depois com a view DATAPEDIDO selecionada tecle Ctrl + Del para deletarmos a mesma, logo em seguida tecle Ctrl + N para criarmos uma nova view e coloque a instrução Sql:

CREATE VIEW DATAPEDIDO(
    NOME,
    IDPEDIDO,
    DATA,
    VALOR)
AS
select
    CLI.nome,
    ped.idpedido,
    ped.data,
    ped.valor
from pedido ped Inner Join cliente cli on cli.idcliente = ped.idcliente
Where DATA = current_date
;

Ok, fizemos um join para buscarmos o valor do campo nome na tabela de cliente. Compile essa view e veja como ele se demonstra no Delphi.

Query Builder

Iremos fazer uma view agora para sabermos todos os pedidos de um determinado cliente e quais foram os itens que ele comprou e o preço que ele pagou e quanto temos em estoque do determinado ítem.

Para isso iremos utilizar o query Builder, para fazermos o nosso diagrama. Clique na opção Tools e logo depois query builder e abrirá uma tela, podemos perceber que a direita está todas as nossas tabelas, arraste todas as quatro, com exceção da nossa view anteriormente. O diagrama deverá ficar assim:



Selecione agora o campo IDCLIENTE da tabela CLIENTE, e arraste-o até o campo IDCLIENTE da tabela PEDIDO, ligando assim os dois campos, faça o mesmo, no campo IDPEDIDO da tabela PEDIDO, arraste-o para o campo IDPEDIDO da tabela ITENS, ligando-os, logo em seguida selecione o campo IDPRODUTO da tabela ITENS e arraste-o até o campo IDPRODUTO da tabela PRODUTO, pronto, fizemos a ligação entre as tabelas, agora precisamos escolher quais campos iremos utilizar em nosso select, na tabela CLIENTE selecione o campo NOME, na tabela PEDIDO selecione os campos IDPEDIDO, DATA, VALOR, na tabela ITENS selecione os campos QUANTIDADE, VALOR_UNITARIO e na tabela PRODUTO selecione os campos PRODUTO E ESTOQUE. Seu diagrama deverá ficar assim:


Diagrma

Execute essa instrução SQL clicando no botão Execute ou tecle F9 e veja o resultado a seguir, mas aqui estamos apenas fericando como ficarar nossa view, ainda não transformamos essa einstrução em view, para isso tecle no botão Create View e abrirá a seguinte tela:



No create view mude o nome para PEDIDOSPORCLIENTE e logo depois clique no botão Compile e na tela que se abre tecle em commit. Ok nossa view está criada.

Você pode agora determinar no Delphi se deseja todos os clientes com seus pedidos e itens ou apenas um cliente com todos os seus pedidos e itens, para isso, basta criar uma instrução SQL no Delphi ou criamos uma nova view que teria como base a nossa view PEDIDOSPORCLIENTE.

Obs.: Quando incluímos um novo pedido com seus itens ele automaticamente atualiza a view.

Conclusão

Este assunto é muito interessante, existe uma enormidade de maneiras de se utilizar uma view, algo que facilitaria o nosso trabalho, podemos criar views para pesquisas diversas e fazer nossas atualizações nas tabelas. vale a pena você estudar mais, nesse artigo foi apenas o início, para que você crie uma base, para novos estudos, foi um prazer escrever para vocês. Abraços!

Publicidade

Vote no artigo




Quantidade de votos: 4 votos
Aceitação: 20%


Detalhes do artigo

Categoria: Banco de dados
Adicionado dia: 16/09/09
Por: Rubens Antunes
Visualizado: 18769 vezes

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