Acessando arquivo textos delimitados usando o Provedor Jet


Este é mais um artigo que mostra como abrir um arquivo texto delimitado usando ADO e o Provedor Microsoft Jet Text IIsam driver. Vamos também criar uma tabela usando a ADOX ( Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security) e inserir o conteúdo do arquivo texto na tabela criada.

Você pode usar qualquer arquivo texto delimitado ou criar o um arquivo para usar como teste. Um arquivo válido que você pode criar em qualquer editor de textos e salvar com a extensão TXT pode possuir o seguinte conteúdo:

Arquivo: ArqTexto.txt

"C1","C2","C3"
"um", "dois", "três"
"1a","2b", "3c"
1,2,3 

Feito isto vamos ao projeto:

1-) Inicie um novo projeto VB

2-) Faça uma referência no seu projeto a - Microsoft Active Data Objects - e a - Microsoft ADO Ext.2.x for DDL and Security.

3-) Inclua dois botões de comando e dois botões de opção no seu formulário

4-) Inclua o seguinte código na seção General Declarations do formulário:

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim PathtoTextFile As String
Dim PathtoMDB As String
Dim myarray() As Variant

5-) Inclua o seguinte Código no evento Load do formulário: Nosso arquivo texto estará no diretório c:\teste , e no mesmo local o arquivo Biblio.mdb para o qual vamos importar o conteúdo do arquivo texto

Private Sub Form_Load()
  PathtoTextFile = "C:\teste\"
  PathtoMDB = "C:\teste\"
  cmdabrir.Caption = "Abrir arquivo Texto"
  cmdinserir.Caption = "Incluir Dados do Texto no arquivo MDB"
End Sub

6-) Agora inclua o código abaixo no evento Click do botão de comando - CmdAbrir : Aqui abrimos o arquivo texto - Arqtexto.txt usando dois métodos distintos , conforme a sua seleção:

Private Sub CmdAbrir_Click()
'============================metodo 1=================================
If Option1.Value = True Then
  cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &   "Data Source=" & PathtoTextFile & ";" & _
  "Extended Properties=""text;HDR=YES;FMT=Delimited"""
  rs.Open "select * from Arqteste.txt",  cn, adOpenStatic, adLockReadOnly, adCmdText
End If
If Option2.Value = True Then
  '============================metodo 2=================================
  cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &  "Data Source=" & PathtoMDB & "Biblio.mdb"
  rs.Open "SELECT * FROM [Text;Database=" & PathtoTextFile & ";" &  "HDR=YES;FMT=Delimited].[ArqTeste.txt]", _
  cn, adOpenStatic, adLockReadOnly, adCmdText
End If
MsgBox rs(0), vbInformation, "Acessando arquivo textos "
rs.Close
cn.Close

End Sub

7-) Inclua o código a seguir no evento click do botão - cmdInserir : Criamos a tabela - tabela1 - com os três  campos e inserimos o conteúdo do arquivo texto na tabela.

Private Sub CmdInserir_Click()
Set Cat = New ADOX.Catalog
Set objTable = New ADOX.Table
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & PathtoMDB & "Biblio.mdb"
'Abre o catalogo
Set Cat.ActiveConnection = cn
'se a tabela ja existir - exclui
On Error Resume Next
Cat.Tables.Delete "tabela1"
'cria a tabela - tabela1
objTable.Name = "Tabela1"
'Cria e anexa novos campos a tabela
objTable.Columns.Append "F1", adWChar
objTable.Columns.Append "F2", adWChar
objTable.Columns.Append "F3", adWChar

Cat.Tables.Append objTable

'Inclui na tabela o conteudo do arquivo texto
cn.Execute "INSERT INTO Tabela1 SELECT * FROM " & "[Text;Database=" & PathtoTextFile & ";HDR=YES].[ArqTexto.txt]"
cn.Close
MsgBox " Os dados do arquivo texto foram incluidos na tabela com sucesso ! ", vbInformation

End Sub

O layout do projeto:

Agora é so rodar e estudar...   


 José Carlos Macoratti