|
|
|
|
|
Dicas
|
|
Visual Basic (Banco de Dados)
|
|
|
Título da Dica: Importando um arquivo texto para uma tabela
|
|
|
|
Postada em 27/9/2003 por Alceste
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:
Código do produto Descrição do produto Quantidade do produto Valor do Produto 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:
ID - código de identificação do produto Desc - descrição do produto Quantidade - quantidade do pedido Custo - o Valor de custo do produto DataPedido - A data do Pedido A estrutura da tabela já criada será a seguinte:
Inicie um novo projeto no VB e no formulário padrão desenhe o layout como a tela abaixo:
Agora insira o seguinte código no evento click do botão de comando. 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
Insira o código a seguir no formulário do seu projeto: Esta função irá separar as informações do arquivo texto. 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...
-------------------------------------------------------------------------------- Alceste de Oliveira Soares
|
|
|
|
|