Microsoft Visual Basic
Este curso fornece conceitos avançados de programação com Visual Basic, tal como manipulação e criação de componentes e servidores COM e programação para a internet. Preparatório para prova da Microsoft.
Valor : R$ 246,00 ou 5 X de R$ 52,00

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
Essas propriedades indicam a origem dos dados, no nosso caso o Data Environment e qual o Command a ser exibido no grid, no nosso caso comCustomers. A estrutura do Recordset pode ser exibida ainda em Design Time se clicarmos o botão direito no grid e selecionarmos Retrieve Structure. Rode o projeto e você deverá ter o resultado mostrado abaixo: 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!