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!