Querendo gerar arquivos XML com ADO ?? 


Para você gerar um arquivo no formato XML ( não sabe nem o que isto ? Leia o artigo : XML - eXtensible Markup Language - Introdução ). 

Vamos gerar um arquivo XML a partir de uma tabela chamada alunos , de onde iremos exibir: o código, nome e nota de cada aluno . O banco de dados está localizado em c:\teste com o nome de escola.mdb. Agora siga o roteiro :

1-) Inicie um novo projeto no Visual Basic e no formulário padrão insira : três botões de comando , duas caixas de texto e duas labels como a figura abaixo:

2-) No evento click do botão de comando - Gera Arquivo XML - insira o seguinte código:

Private Sub cmdGeraArquivoXML_Click()
Dim aConn As ADODB.Connection
Dim aRS As ADODB.Recordset

' cria uma conexão ADO
Set aConn = New ADODB.Connection
aConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Text1.Text

' cria um recordset ADO
Set aRS = New ADODB.Recordset
aRS.Open "SELECT codigo , nome , nota FROM Alunos Order by Codigo", aConn

' chama a rotina para gerar o arquivo XML
Call GeraArquivoXML(aRS, "Aluno")

' fecha e libera memoria usada
aRS.Close
Set aRS = Nothing

' fecha e limpa conexao
aConn.Close
Set aConn = Nothing

MsgBox "O arquivo XML 'saida.xml' foi criado em " & Text2.Text, vbInformation, "Gerando arquivos XML"

End Sub

3-) A função que faz o serviço - GeraArquivoXML - tem o seguinte código: (Insira-a no formulário padrão)

Public Sub GeraArquivoXML(ByVal RS As ADODB.Recordset, Optional ByVal RecordName As String = "item")
Dim F As Integer
Dim oField As ADODB.Field

' pega um identificador livre par ao arquivo e abre para gravacao
F = FreeFile

Open Text2.Text & "\saida.xml" For Output As #F

' o inicio de um arquivo XML possui o plural dos registros do arquivo.
Print #F, "<" & RecordName & "s> "

' percorre um laço por cada registro ate o fim do arquivo
While Not RS.EOF
' escreve uma tab XML para indicar que estamos no comeco de um novo registro
Print #F, " <" & RecordName & ">"

' Percorre cada campo no recordset e grava o nome do campo , o valor e fecha a tag
For Each oField In RS.Fields
Print #F, " <" & oField.Name & ">" & oField.Value & "</" & oField.Name & ">"
Next

' fecha a tag para este registro
Print #F, " </" & RecordName & ">"

' vai para o proximo registro
RS.MoveNext
Wend

' encerra o arquivo xlm
Print #F, "</" & RecordName & "s> "

' fecha o arquivo
Close #F

End Sub

Será gerado o arquivo saida.xml no diretório informado em text2.txt. 

Para ver o resultado apenas clique no arquivo saída e seu Navegador irá exibir o conteúdo do arquivo XML. Veja abaixo:

Gostou até mais ...!!!

Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti