![]() |
||||||||
|
|
||||||||
Quer
saber mais?
Torne-se um MCP em Visual Basic
Faça um treinamento na Búfalo Informática
O Misterioso DataShaping - Parte I
Por: Rinaldo F. Junior - rferj@antares.com.br
Estamos acostumados a lidar com instruções SQL em nossas aplicações para executarmos tarefas em nossos bancos de dados e conhecemos bem suas vantagens. Mas, seria possível tornar o SQL ainda mais vantajoso? A resposta é sim, mas infelizmente a forma de fazê-lo tem tido pouco destaque nos materiais disponíveis sob a forma de manuais, livros e sites. O DataShaping pode ser considerado uma extensão do SQL, que visa a criação de Recordsets que representem um relacionamento entre duas ou mais tabelas. É o que chamamos de Recordset hierárquico. Através do DataShaping podemos construir Recordsets hierárquicos que podem ser manipulados de forma simples e que podem ser reconstruídos através de Reshaping. Isso significa que podemos construir um Recordset sem a necessidade de JOINS complexos ou filtros, o que pode ajudar a reduzir o tráfego na rede e nos dar maior flexibilidade no uso dos dados. O Visual Basic oferece ferramentas que podem facilitar a construção de Recordsets hierárquicos, tal como o Data Environment. Com essa ferramenta o programador pode criar rapidamente um Recordset hierárquico e utilizá-lo em sua aplicação. O Data Environment é também, uma forma de começarmos a aprender como funciona o DataShaping. Sendo assim, vejamos como usar essa ferramenta. Preparando o Data Environment O Data Environment é um Designer que nos permite criar uma conexão com um banco de dados sem escrever código e que nos abre a porta para uma série de ferramentas visuais para o acesso a dados como o Query Builder que facilita a criação de instruções SQL. Além da conexão, ele nos permitirá criar comandos no banco que poderão retornar ou não um Recordset. Então, vamos adicionar o Data Environment ao nosso projeto, seguindo os passos abaixo: 1. Clique no menu Project - Add Data Environment. (Se ele não estiver listado, clique em Project - Components - Designers e selecione-o na lista.) 2. Altere seu nome para deShaping. Após a inserção do Data Environment teremos que estabelecer uma conexão com o banco de dados. Observe que o Data Environment já nos fornece um objeto Connection que vamos utilizar agora: 1. Altere o nome do objeto Connection para cnnShaping. 2. Clique o botão direito do mouse sobre o objeto cnnShaping e selecione Properties. 3. Na janela do Data Link selecione o Provider do JET 3.51 e clique em Next. 4. Informe o caminho que leva ao banco NorthWind.mdb A janela do Data Link Properties nos permite informar os parâmetros da conexão e essas informações serão definidas na propriedade ConnectionSource do Data Environment. Estabelecida a conexão com o banco, teremos que criar um objeto Command que nos traga os dados em que estamos interessados. Como estamos criando uma hierarquia precisaremos na realidade de dois Commands sendo que o primeiro representará o Recordset pai (Parent) e o segundo o filho (Child). Para criar o primeiro Command faça: 1. Clique o botão direito do mouse sobre o objeto cnnShaping e selecione Add Command. 2. Altere o nome do Command para comCustomers. 3. Clique o botão direito do mouse sobre o objeto comCustomers e selecione Properties. 4. Selecione a opção SQL Statement e digite a instrução abaixo: SELECT CustomerID, CompanyName, ContactName FROM Customers O seu Command trará como resultado um Recordset formado pelos campos CustomerID, CompanyName e ContactName da tabela Customers. Esse Recordset estará relacionado a outro através do campo CustomerID, o que vai nos possibilitar cruzar informações entre as duas tabelas. Mas se usarmos um outro Command não teremos um relacionamento mas sim, dois Recordsets diferentes. Para construir a hierarquia precisaremos de um Command dentro do Command comCustomers. Isso será feito adicionando-se um Child Command ao comCustomers. Siga esses passos: 1. Clique o botão direito do mouse sobre o objeto comCustomers e selecione Add Child Command. 2. Altere o nome do Command para comOrders. 3. Clique o botão direito do mouse sobre o objeto comOrders e selecione Properties. 4. Selecione a opção SQL Statement e digite a instrução abaixo: SELECT CustomerID, OrderDate, ShipVia, Freight FROM Orders ORDER BY OrderDate DESC O próximo passo, ainda no Child Command é estabelecer o relacionamento com o Parent Command. Faremos isso através da guia Relation. Selecione a guia e defina o relacionamento como mostra a figura:Você vai observar que os campos a serem relacionados são sugeridos. Se os campos não forem os exibidos troque-os em suas respectivas listagens. Exibindo o Recordset Hierárquico Agora que temos o Recordset montado vamos apresentá-lo. Usaremos um componente que possui características próprias para a exibição desse tipo de Recordset, o Microsoft Hierarchical FlexGrid. Após inserir o componente, definiremos algumas de suas propriedades, conforme a tabela abaixo:
| Propriedade | Valor | |
| Name | FlxShapping | |
| DataSource | DeShapping | |
| DataMember | comCustomers |
Observe que ainda assim temos os valores do campo CustomerID repetidos. Configurando as
propriedades do grid é possível escondê-la. Clique o botão direito no grid,
selecione Properties e em seguida a guia Bands. Desmarque o campo CustomerID do segundo
Band e teste o projeto novamente.
E o DataShapping
Para estabelecer o relacionamento o Data Environment se valeu do DataShapping mas
tornou o processo transparente para você. Mas é possível examinar as instruções do
DataShapping através de uma opção do próprio Data Environment. Clique o botão direito
do mouse sobre o Command comCustomers e selecione Hierarchy Info. Você verá a seguinte
janela:
Como dito anteriormente, o DataShapping é uma extensão do SQL, daí a existência dos
Selects em conjunto instruções próprias do Shapping. Essas instruções vamos examinar
detalhadamente no próximo artigo onde discutiremos a linguagem Shape. Por hora, você
pode experimentar criar outros relacionamentos com o Data Environment.
Download do Projeto.
Boa sorte e até breve!