Importando um arquivo texto para uma tabela


Vamos mostrar outra maneira de importar um arquivo texto para uma tabela de um banco de dados access usando o Visual Basic ( Para maiores informações leia : Como tratar Arquivos textos com o Visual Basic )

Utilizaremos o bom e velho banco de dados Biblio.mdb ( usaremos uma copia do arquivo no diretório c:\teste) e um arquivo texto chamado texto.txt o qual iremos importar para o banco de dados Biblio.mdb. A tabela será criada em tempo de execução. O nosso arquivo texto tem o seguinte formato.

Vamos fazer de conta que ela é gerada por um Mainframe e que temos que importá-la para o nosso arquivo para um tratamento posterior. É importante frisar que devemos saber o layout do arquivo texto para montar nossa rotina de importação e quais as informações devemos extrair para gerar nossa  tabela.

O arquivo a ser importado chama-se texto.txt e  possui as seguintes informações:

  1. Código do produto 
  2. Descrição do produto 
  3. Quantidade do produto 
  4. Valor do Produto 
  5. Data do pedido

O arquivo possui as informações separadas ( delimitadas) por uma vírgula (,) , e usaremos esta informação para montar a rotina que irá separar os campos.

Nosso trabalho será separar cada informação e compor uma tabela com os campos:

  1. ID - código de identificação do produto
  2. Desc - descrição do produto
  3. Quantidade - quantidade do pedido
  4. Custo - o Valor de custo do produto
  5. DataPedido - A data do Pedido

A estrutura da tabela já criada será a seguinte:

Private Sub Command1_Click()

Dim F As Long, sLine As String, A(0 To 4) As String
Dim db As Database, rs As Recordset

On Error GoTo trata_erro

F = FreeFile
Open Text1.Text For Input As F
Set db = DBEngine(0).OpenDatabase(Text2.Text)

On Error Resume Next

db.Execute "DROP TABLE ImportaTexto"

db.Execute "CREATE TABLE ImportaTexto (ID LONG, [Desc] TEXT (50), " _
& "Quantidade LONG, Custo CURRENCY, DataPedido DATETIME)"

Set rs = db.OpenRecordset("ImportaTexto", dbOpenTable)

Do While Not EOF(F)
  Line Input #F, sLine
  ParseToArray sLine, A()
 
rs.AddNew
   rs(0) = Val(A(0))
   rs(1) = A(1)
   rs(2) = Val(A(2))
   rs(3) = Val(A(3))
   rs(4) = CDate(A(4))
  rs.Update
Loop

MsgBox "Arquivo texto importado com sucesso !! "

rs.Close
db.Close

Close #F
Exit Sub
trata_erro:
MsgBox "Ocorreu o erro ==> " & Err.Description
End Sub
Sub ParseToArray(sLine As String, A() As String)

Dim P As Long, LastPos As Long, I As Long

P = InStr(sLine, ",")

Do While P
A(I) = Mid$(sLine, LastPos + 1, P - LastPos - 1)
LastPos = P
I = I + 1
P = InStr(LastPos + 1, sLine, ",", vbBinaryCompare)
Loop
A(I) = Mid$(sLine, LastPos + 1)

End Sub

Ao executar o seu projeto e clicar no botão de comando - Importar o arquivo texto selecionado - teremos a seguinte tela:

Se você abrir o banco de dados verá a tabela - Importatexto - criada e o seu conteúdo exibido como na tela a seguir:

Sem mais comentários e até a próxima dica...