Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«

Micro de mulher
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 







Utilizando DataShape : Criando Hierarquias em código


Você também gostará de ler os seguintes artigos:
Após este arquivo você gostará de estudar :

Já há muitas versões o ADO possui um recurso conhecido como Data Shapping.

O Data Shapping é um Provider especial que permite que os dados sejam acessados através de outro provider (do sql server, por exemplo) e posteriormente manipulados no client através do provider de datashape. Com isso podemos, por exemplo, gerar um relacionamento de tabelas no client, simplificando eventualmente alguns algorítmos.

Deve-se porém estar sempre ciente de que este código está sendo processado no client, consequentemente todos os registros são levados para o client para que o processamento seja realizado. Com volumes pequenos isso se torna uma grande ferramenta de desenvolvimento, mas deve-se tomar muito cuidado com quando usar ou não este recurso.

Podemos iniciar nosso código fazendo um references para o ADO e definindo variáveis no general do formulário da seguinte forma :

dim cn as new connection
dim rspub as new recordset


Em seguida vamos iniciar a carga dos dados no LOAD do form. Vamos analisar as instruções por partes :

Dim SQL as string
cn.Provider = "MSDataShape"
cn.Open "data provider=sqloledb;server=.;uid=sa;pwd=;initial catalog=pubs"

Observe a forma como especificamos um provider como MSDATASHAPE e nos parâmetros passamos a informação data provider como sendo sqloledb, ou seja, estamos no fundo utilizando 2 providers, um para fazer o acesso a banco e o MSDataShape para os tratamentos especiais no client.

SQL = "SHAPE {SELECT * FROM publishers} APPEND " & _
"({SELECT * FROM titles} AS PubTitles " & _
"RELATE pub_id TO pub_id)"

Eis a montagem da instrução SQL, se é que podemos chamar assim. Na verdade é uma instrução de SHAPE que será interpretada pelos provider MSDATASHAPE, que retirará desta instrução as devidas instruções SQL para serem enviadas ou 2o provider.

Observem que temos duas instruções SQL básicas, uma da tabela PAI, outra da tabela FILHO. Com a combinação da das instruções APPEND e RELATE fazemos o relacionamento entre as tabelas pai e filho, observe a indicação da relação entre chave primária e estrangeira utilizada na instrução.

A indicação AS PubTitles tem uma finalidade muito especial. O recordset com os registros relacionados será obtido através de um campo do recordset principal. A indicação AS PubTiles indica o nome deste campo no recordset.

Para exibir os dados vamos utilizar uma textbox para exibir o nome da editora (tabela publishers) e uma listbox para exibir o nome dos títulos (tabela titles). Acrescentaremos na interface dois botões, Próximo e anterior, para realizar a movimentação pelo recordset. Vamos também enfeitar com um label para nos mostrar o registro atual.

Vamos criar uma função que será chamada a cada movimentação para refazer a exibição dos dados. A 1a chamada desta função fica então sendo no form_load, junto com a abertura do recordset, veja :

rsPub.Open SQL, cn, adOpenStatic, adLockReadOnly, adCmdText
ExibeRegistro

Veja então como ficou o código completo do form_load :

Sub Form_load
   Dim SQL as string
   cn.Provider = "MSDataShape"
   cn.Open "data provider=sqloledb;server=.;uid=sa;pwd=;initial catalog=pubs"
   SQL = "SHAPE {SELECT * FROM publishers} APPEND " & _
   "({SELECT * FROM titles} AS PubTitles " & _
   "RELATE pub_id TO pub_id)"
   rsPub.Open SQL, cn, adOpenStatic, adLockReadOnly, adCmdText
   ExibeRegistro
End Sub


O código dos botões cmdNext e cmdPrev é muito simples :

sub cmdNext_click()
   rspub.movenext
   if rspub.eof then
   rspub.moveprevious
   end if
   ExibeRegistro
end sub
Sub cmdPrev_click()
   rspub.moveprevious
   if rspub.bof then
   rspub.movenext
   end if
   ExibeRegistro
end sub


Vamos então montar a sub ExibeRegistro, que nos mostrará como acessar os dados relacionados :


   Sub ExibeRegistro()
	   dim rstit as recordset
	 'Preenche o nome da editora
	   txteditora.text=rspub.fields("pub_name")
	 'apaga a lista de livros
	   lstlivros.clear
   
	   'Obtem o recordset de títulos
	   set rstit=rspub.fields("pubtitles").value
   
   	do while not rstit.eof
		   lstlivros.addnew rstit.fields("title").value
		   rstit.movenext
	   loop
		 lblReg=rspub.absoluteposition    & "/" & rspub.recordcount
   end sub


Com este exemplo montamos uma interface simples para manipular registros utilizando o recurso de shapping. Aproveite este recurso !

[]'s

Dennes Torres
MCSD,MCSE,MCDBA





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Elenilson E-Mail : ele_bom@yahoo.com.br
Excelente ainda mais agora que estou começando a manipular dados com
Interface ( Visual Basic ) e Base de Dados ( Access ).
Muito Bom ...
Nome : hkUB4OQY E-Mail : fo9c0vnyq@mail.com
This is awesome, thank you! I built an entrie back-end system that was going to rely on this type of record set and I was beginning to think it couldn't be done! You've saved me a lot of re-design, thanks!
Nome : FE6T6IKQGC E-Mail : xktpevjzm@mail.com
What a joy to find soenome else who thinks this way.
Nome : bBb9Z6FMs E-Mail : 9zsooho0v@gmail.com
the &qtot;lefu" has no love is islam, but a love of the constitution, which guarantees freedom of religion.ironic that the tea party radicals claim they, too, honor the constitution. what a farce.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br