DAO
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
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
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
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
Se vc prentende continuar usando Access, eu aconselho a continuar com DAO.
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.
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.
oi JPAULO,
coloca após a inserção dos dados:
tenta e me fala, abrass
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
Olá amigo, limpou as celulas, mais não enviou para base no Acces.
Veja colega
apenas para completar o código, a maioria da ajuda foi do colega DEKINHO então se funcionar ponto pra ele OK
não tenho certeza mas creio que assim funcionará
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á
DEKINHO E MARCELO_TREZE, MUITO OBRIGADO PELA AJUDA. FUNCIONOU DIREITINHO.
VALEU AMIGOS.
VALEU AMIGOS.
Tópico encerrado , respostas não são mais permitidas