Usando o Controle Hierarchical FlexGrid
O controle Hierarchical FlexGrid (MSHFlexGrid) esta disponível a partir da versão 6.0 do VB e você poderá utilizá-lo para exibir grupos de dados relacionados em um formato compacto e amigável.
Usando o cursor hierárquico podemos definir um objeto Recordset Filho como relacionamento de um campo Recordset Pai. Temos também uma nova sintaxe para manipular essas informações que nos permite criar consultas que resultam em um Recordset hierárquico.
Isto pode ser feito de duas maneiras: primeiro anexando um Recordset Filho ao Recordset Pai enquanto o segundo atua em um operação agregada em um Recordset filho e gera um recordset Pai.
O acesso ao Recordset hierárquico pode ser feito via código ou através de um controle visual como o Data Environment.
Para Vincular dados ao controle Hierarchical FlexGrid iremos usar o provedor MSDataShape , ele nos dará a capacidade de executar comandos usando um superconjunto da sintaxe SQL permitindo a descrição de uma relação entre dois conjuntos de registros.
Embora a relação entre duas tabelas possa ser escrita usando uma junção SQL ( Join ), a relação hierárquica faz o serviço com mais eficiência pois evita exibir diversos registros repetidos do lado "UM" .
Para ilustrar vamos construir um projeto onde usaremos o controle MSHFlexGrid em duas situações:
Iniciando o Projeto
No
formulário do projeto temos a opção de escolher qual a conexão vamos
usar. Para isto basta selecionar a conexão desejada e clicar no
botão iniciar.
Obs: A conexão para a base Access usa o provedor OLE DB Jet versão 3.51 (access 97). Se você for usar uma base de dados Access 2000 use a versão 4.0. Nota : A conexão com o SQL Server esta específica para a configuração da minha máquina. Ao utilizar o exemplo no seu equipamento refaça a configurção do DATA SOURCE. |
Private Sub Command1_Click() iniciar_conexao End Sub Private Sub iniciar_conexao() |
Como funciona ?
Ao clicar no botão Iniciar a procedure iniciar_conexão é chamada , e , conforme a seleção de conexão feita realiza a conexão.
Embora a configuração para as conexões sejam diferentes , a sintaxe usada é a da linguagem DATA SHAPING . Podemos dividir a instrução em três partes:
A sintaxe é a seguinte:
"SHAPE {parent-command}
[[AS] table-alias]
APPEND {child-command} RELATE(parent-column TO child-column)"
|
"SHAPE {< INSTRUÇÃO SQL 1 >} [[AS] table-alias] APPEND {<INSTRUÇÃO SQL 2>} RELATE(<INSTRUÇÃO SQL 3>)"
|
Nota: O aliás usado no comando SHAPE , ([AS] table-alias]) é opcional
Vamos dar uma olhada em uma das conexões usadas:
conexao = "Provider=MSDataShape;" & _ "Data Source=C:\teste\biblio.mdb;" & _ "Data Provider=Microsoft.Jet.OLEDB.3.51;" |
Observe que usamos um provedor - Provider - chamado MSDataShape , é ele que forma o recordset hierárquico além disso tivemos que informar o Data Source que indica a localização da nossa base de dados e o Data Provider que informa a fonte original de dados e determina quais características do SQL o Shape pode usar.
A instrução SQL usada constrói a estrutura do Recordset que desejamos exibir. Ela usa a sintaxe Shape já explicada acima.
Se você levar em conta que a podemos passar parâmetros para o comando SHAPE , como por exemplo:
"SHAPE {SELECT * FROM customer}
APPEND {SELECT * FROM orders WHERE cust_id = ?}
RELATE (cust_id TO PARAMETER 0)"
Aqui as tabelas tem em
comum a coluna cust_id , então usamos o coringa
? em
{child-command}
que é referenciado na cláusula RELATE
e relacionado com PARAMETER 0 , que neste caso é a coluna {child-command}
atribuida a ?.
Verá que temos muitas possibilidades para aplicação desta técnica.
Vejamos o resultado da execução para a conexão SQL Server :
Ao
lado o resultado da conexão com o SQL Server.
Vemos uma lista de países e todos os clientes desses países. Os registros são exibidos em um formato de contorno que você pode expandir (+) ou reduzir (-). Tudo isto produz um formato compacto que pode ser percorrido com mais facilidade. |
Com isto apenas arranhamos os recordsets hierárquicos e o Data Shaping. Mais informações ? Visite o site msdn.microsoft.com e bom estudo...
Copyright (c) 2001 - José Carlos Macoratti e amigos (Toda a Web)