DAO

JPAULO101 14/01/2010 15:25:16
#331902
Boa tarde galera. Estou com uma rotina em VBA, onde enviar os dados do excel para base de dados Access

Private Sub Botão_Click()

Dim BD As Database
Dim TB As Recordset


Set BD = OpenDatabase([Ô]C:\SISTEMA VISITAS DE COBRANÇA\BANCOVISITA2010.mdb[Ô])
Set TB = BD.OpenRecordset([Ô]TblGeralVisitas[Ô], dbOpenTable)

Dim c As Integer
c = 5
Do While Plan2.Cells(c, 2) <> [Ô][Ô]
TB.AddNew
TB([Ô]CONTRATO[Ô]) = CDbl(Plan2.Cells(c, 2))
TB([Ô]DATAPROG[Ô]) = CDate(Plan2.Cells(c, 3))
TB([Ô]OFICINA[Ô]) = CStr(Plan2.Cells(c, 4))
TB([Ô]ROTA[Ô]) = CStr(Plan2.Cells(c, 5))
TB([Ô]AGENTE[Ô]) = CStr(Plan2.Cells(c, 6))
TB([Ô]DATAEXECUÇÃO[Ô]) = CDate(Plan2.Cells(c, 7))
TB([Ô]DATACONSULTA[Ô]) = CDate(Plan2.Cells(c, 8))
TB([Ô]RESULTADO[Ô]) = CStr(Plan2.Cells(c, 9))
TB([Ô]DATADIGITAÇÃO[Ô]) = CDate(Plan2.Cells(c, 10))
TB([Ô]AREA[Ô]) = CStr(Plan2.Cells(c, 11))


TB.Update
Plan2.Cells(c, 2) = [Ô][Ô]
Plan2.Cells(c, 3) = [Ô][Ô]
Plan2.Cells(c, 4) = [Ô][Ô]
Plan2.Cells(c, 5) = [Ô][Ô]
Plan2.Cells(c, 6) = [Ô][Ô]
Plan2.Cells(c, 7) = [Ô][Ô]
Plan2.Cells(c, 8) = [Ô][Ô]
Plan2.Cells(c, 9) = [Ô][Ô]
Plan2.Cells(c, 10) = [Ô][Ô]
Plan2.Cells(c, 11) = [Ô][Ô]

c = c + 1

Loop

TB.Clone
BD.Close

Set TB = Nothing
Set BD = Nothing

MsgBox [Ô]Dados atualizados com sucesso[Ô], vbInformation, [Ô]OT - AVISO DE CORTE[Ô]

End Sub

Essa rotina enviar os dados para base Access e limpa as celular ao mesmo tempo. Gostaria de fazer essa mesma rotina utilizando ADO. Alguém pode mim ajudar.

Agradeço
ONBASS 14/01/2010 15:45:16
#331904
Resposta escolhida
JPAULO,

creio q só muda a forma de acesso....
assim como varios outros exemplos aqui do forum, eu tbm usei ADO..
não se se serve como idéia, mas.... vlw

www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8600
MARCOSLING 14/01/2010 16:11:00
#331906
Se vc prentende continuar usando Access, eu aconselho a continuar com DAO.
JPAULO101 14/01/2010 19:24:19
#331929
Olá DEKINHO, tudo bem, consegui com seu exemplo, mais ele está apenas enviando, mais não limpa as celulas quando envia. O código ficou assim.

Dim acObj As ADODB.Connection
Sub Botão1_Clique()

Set acObj = New ADODB.Connection
acObj.Open ([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SISTEMA VISITAS DE COBRANÇA\BANCOVISITA2010.mdb;[Ô])

r = 5

Range([Ô]B[Ô] & r).Select
acObj.Execute [Ô]DELETE FROM Contatos[Ô]

While Not Selection = [Ô][Ô]
acObj.Execute [Ô]INSERT INTO TblGeralVisitas(CONTRATO,OT,DATAPROG,OFICINA,ROTA,AGENTE,DATAEXECUÇÃO,DATACONSULTA,RESULTADO,TIPO,DATADIGITAÇÃO,AREA) VALUES([ô][Ô] & Range([Ô]B[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]C[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]D[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]E[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]F[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]G[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]H[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]I[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]J[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]K[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]L[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]M[Ô] & r) & [Ô][ô])[Ô]
r = r + 1
Selection.Offset(1, 0).Select
Wend

MsgBox [Ô]Registros atualizados com sucesso.[Ô]

acObj.Close
Set acObj = Nothing

End Sub

Desde já agradeço.
ONBASS 14/01/2010 23:55:25
#331956
oi JPAULO,

coloca após a inserção dos dados:

Citação:


r = 5

Range([Ô]b[Ô] & r).Select
While Not Selection = [Ô][Ô]
Selection = [Ô][Ô]
Selection.Offset(0, 1) = [Ô][Ô] [ô]c5
Selection.Offset(0, 2) = [Ô][Ô] [ô]d5 .... por aí vai
Selection.Offset(1, 0).Select
Wend

MsgBox [Ô]dados limpos com sucesso[Ô]



tenta e me fala, abrass
JPAULO101 15/01/2010 10:25:07
#331975
Olá amigo, limpou as celulas, mais não enviou para base no Acces.
MARCELO.TREZE 15/01/2010 11:10:44
#331985
Veja colega

apenas para completar o código, a maioria da ajuda foi do colega DEKINHO então se funcionar ponto pra ele OK

Dim acObj As ADODB.Connection
Sub Botão1_Clique()

Set acObj = New ADODB.Connection
acObj.Open ([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SISTEMA VISITAS DE COBRANÇA\BANCOVISITA2010.mdb;[Ô])

r = 5

Range([Ô]B[Ô] & r).Select
acObj.Execute [Ô]DELETE FROM Contatos[Ô]

While Not Selection = [Ô][Ô]
acObj.Execute [Ô]INSERT INTO TblGeralVisitas(CONTRATO,OT,DATAPROG,OFICINA,ROTA,AGENTE,DATAEXECUÇÃO,DATACONSULTA,RESULTADO,TIPO,DATADIGITAÇÃO,AREA) VALUES([ô][Ô] & Range([Ô]B[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]C[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]D[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]E[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]F[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]G[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]H[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]I[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]J[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]K[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]L[Ô] & r) & [Ô][ô],[ô][Ô] & Range([Ô]M[Ô] & r) & [Ô][ô])[Ô]
Range([Ô]B[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]C[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]D[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]E[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]F[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]G[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]H[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]I[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]J[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]K[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]L[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]
Range([Ô]M[Ô] & r).Select
ActiveCell.Value = [Ô][Ô]

r = r + 1
Selection.Offset(1, 0).Select
Wend

MsgBox [Ô]Registros atualizados com sucesso.[Ô]

acObj.Close
Set acObj = Nothing

End Sub


não tenho certeza mas creio que assim funcionará
JPAULO101 15/01/2010 15:36:08
#332055
DEKINHO E MARCELO_TREZE, MUITO OBRIGADO PELA AJUDA. FUNCIONOU DIREITINHO.


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