IMPORTAR .TXT PARA ACCESS

ARES 09/01/2011 18:58:57
#361680
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.
TECLA 09/01/2011 21:18:26
#361694
Resposta escolhida
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
ARES 10/01/2011 10:37:43
#361723
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?

ARES 19/01/2011 09:49:38
#362699
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!!!

Tópico encerrado , respostas não são mais permitidas