Planeta Delphi - Artigo | Trabalhando com View...
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.
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:
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:
Coloque registros nas tabelas, para que possamos ter um entendimento melhor.
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.
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.
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:
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.
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.
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:
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.
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!