Esta semana vamos criar uma arquivo XML fisicamente no Visual Basic usando o ADO, e depois ler este arquivo em um ListView.
O banco que usei para este exemplo esta diponível para download aqui.
No Visual Basic crie um novo Projeto com nome de VBXML, renomeie o Form1 para frmXML e insira um Módulo com o nome de modCnn, como mostra a figura abaixo:

Agora vamos criar, dentro do Módulo, o código de conexão com o banco como mostram as linhas abaixo:
Option Explicit
Global cn As
ADODB.Connection
Global rs As
ADODB.Recordset
Private Sub Main()
Dim strArquivo As
String
Dim strLocal As String
Dim Conecta As String
DoEvents
Set cn = New
ADODB.Connection
Set rs = New
ADODB.Recordset
strArquivo = "agenda.mdb"
strLocal = App.Path
Set cn = CreateObject("ADODB.Connection")
Conecta = "Driver={Microsoft Access Driver (*.mdb)};"
& _
"Dbq=" & strArquivo & ";" & _
"DefaultDir=" & strLocal & ";" &
_
"Uid=Admin;Pwd=;"
cn.Open Conecta
Load frmXML
frmXML.Show
End Sub
Não esqueçam de fazer referência ao ADO 2.5 (Microsoft ActiveX Data Objects 2.5 Library) para usar a conexão com o banco e criar o XML, e ao File System Object (Microsoft Scripting Runtime) para criar o XML fisicamente em uma determinada pasta, como mostra a figura abaixo:

Voltando ao form frmXML modele-o como mostra a figura abaixo:

Para incluir um ListView, no menu principal clique em Project/Components e selecione o ítem Microsoft Windows Common Controls 6.0 (SP6), como mostra a figura abaixo:

Na barra de componente, dê um duplo clique em ListView, como mostra a figura abaixo:

Selecione o ListView que acabou de inserir, vá em properties e renomeie para lstAgenda, como mostra a figura abaixo:
Agora clique em Custom, e, em Column Headers, crie 4 campos: Código, Nome, Endereço e Telefone, como mostra a figura abaixo:
Codifique o frmXML da seguinte forma:
Dim strArq As
String
Dim fso As New FileSystemObject
Private Sub cmdCriar_Click()
lstAgenda.ListItems.Clear
strArq = App.Path & "Agenda.xml"
'Se o arquivo existe, é excluído
para criar um novo
If fso.FileExists(strArq) Then
fso.DeleteFile (strArq)
Set rs = CreateObject("ADODB.Recordset")
rs.Open "select * from pessoal", cn, adOpenKeyset, adLockOptimistic
rs.Save strArq, adPersistXML
rs.Close
MsgBox "Arquivo criado com sucesso.",
vbInformation
End Sub
Private Sub cmdLer_Click()
Dim Item As
ListItem
strArq = App.Path & "Agenda.xml"
'Se o arquivo ainda não foi criado,
esse filtro se encarrega
'de chamar a rotina de criação do XML antes de ler
If Not fso.FileExists(strArq) Then
Call cmdCriar_Click
End If
Set rs = CreateObject("ADODB.Recordset")
'Limpar lista
lstAgenda.ListItems.Clear
With rs
.Open strArq, "Provider=MSPersist"
Do Until rs.EOF
Set Item = lstAgenda.ListItems.Add(,
, rs("codigo"))
Item.SubItems(1) = rs("nome")
Item.SubItems(2) = rs("end")
Item.SubItems(3) = rs("fone")
rs.MoveNext
Loop
End With
'desmarca a lista
lstAgenda.SelectedItem.Selected = False
End Sub
Private Sub cmdSair_Click()
cn.Close
Unload Me
End Sub
Por enquanto é só pessoal. Um abraço a todos e até a semana que vem.
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
Luciano Correa é certificado MCP pela Microsoft, Analista e desenvolvedor Visual Basic, ASP e SQL-Server.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.