Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
270
Assunto : Visual Basic
Titulo: Transformando recordset em XML com uso de Stream

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Que o método Save do recordset permite salva-lo em formato XML isso já haviamos dito aqui anteriormente, já é de conhecimento geral.

Em nossas dicas já foram comentados problemas sobre a passagem de recordsets como parâmetro através de objetos distribuidos (objetos COM). De fato, é uma das melhores formas de realizar uma passagem de dados para um componente, mas hoje já possui concorrência : A passagem via XML. Debate-se muito sobre qual seria a melhor, a passagem de um recordset ou de um conjunto de dados em XML.

E por que não juntar tudo e fazer a passagem de um recordset em XML ?

O grande problema disso era o fato do método save gerar um arquivo em disco, o que era indesejado. Mas a partir da versão 2.5 do ADO foi incorporado ao ADO o objeto Stream e o Recordset passou a poder salvar seu conteudo não apenas para um arquivo em disco, mas também para um objeto Stream. Isso nos permite pegar o XML referente ao recordset sem criar arquivo em disco, transferir esse XML e do outro lado carregar tudo novamente, mais uma vez utilizando o Stream.

Veja como fica :

Private Sub Command2_Click()
Dim rs As ADODB.Recordset
Dim stm As ADODB.Stream
Dim strRst As String

Set rs = New ADODB.Recordset
Set stm = New ADODB.Stream

' Open, save, and close the recordset.
rs.Open "SELECT * FROM Customers", "Provider=sqloledb;" & _
"Data Source=.;Initial Catalog=Northwind;" & _
"User Id=sa;Password=;"""
rs.Save stm, adPersistXML
rs.Close
Set rs = Nothing

' Put saved Recordset into a string variable.
strRst = stm.ReadText(adReadAll)
MsgBox strRst
End Sub

O exemplo acima abriu o recordset, salvou o recordset para um stream e depois obteve o conteúdo do stream na forma de uma string, uma string contendo o XML que representa todo o recordset.

Já a função abaixo faz o inverso :

Private Function MontarRS(doc As string) As Recordset
Dim stm As ADODB.Stream
Dim rs As ADODB.Recordset

Set stm = New ADODB.Stream
Set rs = New ADODB.Recordset

stm.open
stm.WriteText doc
stm.Position = 0

rs.open stm

Set MontarRS = rs

stm.Close
Set stm = Nothing

End Function

Ela recebe um string, carrega o string em um stream e usa o stream para abrir o recordset, devolvendo o recordset como resultado.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 5/24/2006 5:39:00 PM
nome: Anselmo
email: anselmo@ciagri.usp.br
comentário:
Eu apliquei essa soluçao no nosso projeto sem saber!!!

Que coincidencia!!!!!!!!

Ricardo


data: 10/21/2005 10:20:00 AM
nome: Jurandir
email: jbiu@ig.com.br
comentário:
Bom,

Uso isto com Ajax (XMLHTTP), e há um problema nesta transformação (RS -> XML), quando o RS tem muitos registros e muitas colunas. O que acontece é que demora muito para fazer a transformação e pesa no servidor, causando a paralização dos outros serviços (COM).

Se alguém tiver solução para isto.

Jurandir


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br