IMPORTAR .TXT PARA ACCESS
Amigos, boa tarde!
Estou usando o código abaixo para importar dados de um arquivo .txt para access via DAO, entretanto, todo o projeto está rodando em ADO e eu não sei como mudar de DAO para ADO:
Private Sub importa_diario()
Dim F As Long, sLine As String, A(0 To 20) As String
Dim db As Database, rs As Recordset
Dim i As Integer
On Error GoTo trata_erro
i = 1
Set db = OpenDatabase(App.Path & [Ô]\db001\BC001.mdb[Ô])
Me.text1 = [Ô]c:\ASGARD\IMPORT\DIARIO.txt[Ô]
Me.text2 = [Ô]c:\ASGARD\db001\bc001.mdb[Ô]
F = FreeFile
Open text1.Text For Input As F
Set db = DBEngine(0).OpenDatabase(text2.Text)
On Error Resume Next
Set rs = db.OpenRecordset([Ô]zeus_diario[Ô], dbOpenTable)
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
rs.AddNew
rs(0) = A(0)
rs(1) = A(1)
rs(2) = CDate(A(2))
rs(3) = A(3)
rs(4) = A(4)
rs(5) = A(5)
rs(6) = Val(A(6))
rs(7) = A(7)
rs(8) = A(8)
rs(9) = A(9)
rs(10) = A(10)
rs(11) = A(11)
rs(12) = A(12)
rs(13) = A(13)
rs(14) = A(14)
rs(15) = A(15)
rs(16) = A(16)
rs(17) = A(17)
rs(18) = A(18)
rs(19) = Val(A(19))
rs.Update
Loop
MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]
rs.Close
db.Close
Close #F
Kill [Ô]c:\asgard\import\diario.txt[Ô]
Exit Sub
trata_erro:
MsgBox [Ô]Ocorreu o erro na importação do arquivo ==> [Ô] & Err.Description
End Sub
Bom, teria uma forma de trabalhar em um mesmo programa com ADO e DAO, ou seria possÃvel que alguém me ajudasse a transforma-lo em um código ADO.
Desde já agradeço.
Estou usando o código abaixo para importar dados de um arquivo .txt para access via DAO, entretanto, todo o projeto está rodando em ADO e eu não sei como mudar de DAO para ADO:
Private Sub importa_diario()
Dim F As Long, sLine As String, A(0 To 20) As String
Dim db As Database, rs As Recordset
Dim i As Integer
On Error GoTo trata_erro
i = 1
Set db = OpenDatabase(App.Path & [Ô]\db001\BC001.mdb[Ô])
Me.text1 = [Ô]c:\ASGARD\IMPORT\DIARIO.txt[Ô]
Me.text2 = [Ô]c:\ASGARD\db001\bc001.mdb[Ô]
F = FreeFile
Open text1.Text For Input As F
Set db = DBEngine(0).OpenDatabase(text2.Text)
On Error Resume Next
Set rs = db.OpenRecordset([Ô]zeus_diario[Ô], dbOpenTable)
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
rs.AddNew
rs(0) = A(0)
rs(1) = A(1)
rs(2) = CDate(A(2))
rs(3) = A(3)
rs(4) = A(4)
rs(5) = A(5)
rs(6) = Val(A(6))
rs(7) = A(7)
rs(8) = A(8)
rs(9) = A(9)
rs(10) = A(10)
rs(11) = A(11)
rs(12) = A(12)
rs(13) = A(13)
rs(14) = A(14)
rs(15) = A(15)
rs(16) = A(16)
rs(17) = A(17)
rs(18) = A(18)
rs(19) = Val(A(19))
rs.Update
Loop
MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]
rs.Close
db.Close
Close #F
Kill [Ô]c:\asgard\import\diario.txt[Ô]
Exit Sub
trata_erro:
MsgBox [Ô]Ocorreu o erro na importação do arquivo ==> [Ô] & Err.Description
End Sub
Bom, teria uma forma de trabalhar em um mesmo programa com ADO e DAO, ou seria possÃvel que alguém me ajudasse a transforma-lo em um código ADO.
Desde já agradeço.
Não tem muita coisa para se alterar, vou destacar em [txt-color=#e80000]vermelho[/txt-color] pra facilitar.
=====================================
Private Sub importa_diario()
Dim F As Long, sLine As String, A(0 To 20) As String
[txt-color=#e80000]Dim db As Database, rs As Recordset[/txt-color]
Dim i As Integer
On Error GoTo trata_erro
i = 1
[txt-color=#e80000]Set db = OpenDatabase(App.Path & [Ô]\db001\BC001.mdb[Ô])[/txt-color]
Me.text1 = [Ô]c:\ASGARD\IMPORT\DIARIO.txt[Ô]
Me.text2 = [Ô]c:\ASGARD\db001\bc001.mdb[Ô]
F = FreeFile
Open text1.Text For Input As F
[txt-color=#e80000]Set db = DBEngine(0).OpenDatabase(text2.Text)[/txt-color]
On Error Resume Next
[txt-color=#e80000]Set rs = db.OpenRecordset([Ô]zeus_diario[Ô], dbOpenTable)[/txt-color]
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
rs.AddNew
rs(0) = A(0)
rs(1) = A(1)
rs(2) = CDate(A(2))
rs(3) = A(3)
rs(4) = A(4)
rs(5) = A(5)
rs(6) = Val(A(6))
rs(7) = A(7)
rs(8) = A(8)
rs(9) = A(9)
rs(10) = A(10)
rs(11) = A(11)
rs(12) = A(12)
rs(13) = A(13)
rs(14) = A(14)
rs(15) = A(15)
rs(16) = A(16)
rs(17) = A(17)
rs(18) = A(18)
rs(19) = Val(A(19))
rs.Update
Loop
MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]
rs.Close
db.Close
Close #F
Kill [Ô]c:\asgard\import\diario.txt[Ô]
Exit Sub
trata_erro:
MsgBox [Ô]Ocorreu o erro na importação do arquivo ==> [Ô] & Err.Description
End Sub
=====================================
Private Sub importa_diario()
Dim F As Long, sLine As String, A(0 To 20) As String
[txt-color=#e80000]Dim db As Database, rs As Recordset[/txt-color]
Dim i As Integer
On Error GoTo trata_erro
i = 1
[txt-color=#e80000]Set db = OpenDatabase(App.Path & [Ô]\db001\BC001.mdb[Ô])[/txt-color]
Me.text1 = [Ô]c:\ASGARD\IMPORT\DIARIO.txt[Ô]
Me.text2 = [Ô]c:\ASGARD\db001\bc001.mdb[Ô]
F = FreeFile
Open text1.Text For Input As F
[txt-color=#e80000]Set db = DBEngine(0).OpenDatabase(text2.Text)[/txt-color]
On Error Resume Next
[txt-color=#e80000]Set rs = db.OpenRecordset([Ô]zeus_diario[Ô], dbOpenTable)[/txt-color]
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
rs.AddNew
rs(0) = A(0)
rs(1) = A(1)
rs(2) = CDate(A(2))
rs(3) = A(3)
rs(4) = A(4)
rs(5) = A(5)
rs(6) = Val(A(6))
rs(7) = A(7)
rs(8) = A(8)
rs(9) = A(9)
rs(10) = A(10)
rs(11) = A(11)
rs(12) = A(12)
rs(13) = A(13)
rs(14) = A(14)
rs(15) = A(15)
rs(16) = A(16)
rs(17) = A(17)
rs(18) = A(18)
rs(19) = Val(A(19))
rs.Update
Loop
MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]
rs.Close
db.Close
Close #F
Kill [Ô]c:\asgard\import\diario.txt[Ô]
Exit Sub
trata_erro:
MsgBox [Ô]Ocorreu o erro na importação do arquivo ==> [Ô] & Err.Description
End Sub
Tacla, bom dia!
Obrigado pela resposta mas, ainda não consegui.
Então eu devo substituir estes campos pela forma que uso na ADO?
Eu tiro o [txt-color=#e80000]Dim db As Database, rs As Recordset [/txt-color](minha conexão com o recordset e com o connection e no modulo)
Public mycon As New ADODB.Connection
Public mycmd As New ADODB.Command
Public myrs As New ADODB.Recordset
excluo estas dados ([txt-color=#e80000]Set db = OpenDatabase(App.Path & [Ô]\db001\BC001.mdb[/txt-color][Ô]) e abro a conexão
mycon.ConnectionString = [Ô]provider=microsoft.jet.oledb.4.0;[Ô] & [Ô] data source=[Ô] & App.Path & [Ô]\db001\bc001.mdb[Ô]
mycon.Open
bom e agora? como faço para atualizar os dados da tabela?
Obrigado pela resposta mas, ainda não consegui.
Então eu devo substituir estes campos pela forma que uso na ADO?
Eu tiro o [txt-color=#e80000]Dim db As Database, rs As Recordset [/txt-color](minha conexão com o recordset e com o connection e no modulo)
Public mycon As New ADODB.Connection
Public mycmd As New ADODB.Command
Public myrs As New ADODB.Recordset
excluo estas dados ([txt-color=#e80000]Set db = OpenDatabase(App.Path & [Ô]\db001\BC001.mdb[/txt-color][Ô]) e abro a conexão
mycon.ConnectionString = [Ô]provider=microsoft.jet.oledb.4.0;[Ô] & [Ô] data source=[Ô] & App.Path & [Ô]\db001\bc001.mdb[Ô]
mycon.Open
bom e agora? como faço para atualizar os dados da tabela?
Tecla, obrigado pela resposta.
Sou seu fã!!
Problema resolvido, segue o código usado para adicionar os dados na tabela clientes:
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
End Sub
Private Sub cliente()
Dim F As Long, sLine As String, A(0 To 7) As String
On Error GoTo trata_erro
[ô]localiza o caminho da arquivo .txt para importar para a tabela
Me.text1 = [Ô]C:\ASGARD\export\AH01\clientes.txt[Ô]
[ô]inicia a conexão com o banco de dados
mycon.ConnectionString = [Ô]provider=microsoft.jet.oledb.4.0;[Ô] & [Ô] data source=[Ô] & App.Path & [Ô]\db001\bc001.mdb[Ô]
mycon.Open
[ô]verifica os dados dentro da .txt
F = FreeFile
[ô]abre a .txt e inicia um loop para o número de linhas dentro do arquivo
Open text1.Text For Input As F
[ô]inicia o processo de transferencia dos dados
With mycmd
Set .ActiveConnection = mycon
.CommandType = adCmdText
[ô]limpa os dados da tabela
.CommandText = [Ô]drop table cliente[Ô]
On Error Resume Next
[ô]passa os parametros do loop para adicionar os dados na tabela cliente
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
[ô]insere os dados do array na tabela clientes
.CommandText = [Ô]insert into cliente [Ô] & [Ô] (codigo, nome, endereco, bairro, cidade, uf, cep, fone) values ([ô][Ô] & Val(A(0)) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(1) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(2) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(3) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(4) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(5) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(6) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(7) & [Ô][ô])[Ô]
.Execute
[ô]finaliza o loop
Loop
End With
MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]
Set mycmd = Nothing
mycon.Close
Close #F
[ô]exclui o arquivo .txt da pasta
Kill [Ô]C:\asgard\export\AH01\clientes.txt[Ô]
Exit Sub
trata_erro:
MsgBox [Ô]Ocorreu o erro ==> [Ô] & Err.Description
End Sub
Tecla, vc é o cara!!!
Sou seu fã!!
Problema resolvido, segue o código usado para adicionar os dados na tabela clientes:
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
End Sub
Private Sub cliente()
Dim F As Long, sLine As String, A(0 To 7) As String
On Error GoTo trata_erro
[ô]localiza o caminho da arquivo .txt para importar para a tabela
Me.text1 = [Ô]C:\ASGARD\export\AH01\clientes.txt[Ô]
[ô]inicia a conexão com o banco de dados
mycon.ConnectionString = [Ô]provider=microsoft.jet.oledb.4.0;[Ô] & [Ô] data source=[Ô] & App.Path & [Ô]\db001\bc001.mdb[Ô]
mycon.Open
[ô]verifica os dados dentro da .txt
F = FreeFile
[ô]abre a .txt e inicia um loop para o número de linhas dentro do arquivo
Open text1.Text For Input As F
[ô]inicia o processo de transferencia dos dados
With mycmd
Set .ActiveConnection = mycon
.CommandType = adCmdText
[ô]limpa os dados da tabela
.CommandText = [Ô]drop table cliente[Ô]
On Error Resume Next
[ô]passa os parametros do loop para adicionar os dados na tabela cliente
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
[ô]insere os dados do array na tabela clientes
.CommandText = [Ô]insert into cliente [Ô] & [Ô] (codigo, nome, endereco, bairro, cidade, uf, cep, fone) values ([ô][Ô] & Val(A(0)) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(1) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(2) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(3) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(4) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(5) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(6) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(7) & [Ô][ô])[Ô]
.Execute
[ô]finaliza o loop
Loop
End With
MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]
Set mycmd = Nothing
mycon.Close
Close #F
[ô]exclui o arquivo .txt da pasta
Kill [Ô]C:\asgard\export\AH01\clientes.txt[Ô]
Exit Sub
trata_erro:
MsgBox [Ô]Ocorreu o erro ==> [Ô] & Err.Description
End Sub
Tecla, vc é o cara!!!
Tópico encerrado , respostas não são mais permitidas