Notifications
Clear all

Gravar dados no Access

3 Posts
2 Usuários
0 Reactions
1,577 Visualizações
(@nxtzr)
Posts: 13
Active Member
Topic starter
 

Boa noite!

Tenho um código para importar dados de uma planilha do excel, que se encontra fechada, para o access. Este código funciona perfeitamente com outra planilha, mas com a última adaptação que eu fiz eu continuo recebendo o seguinte erro:
"Erro em tempo de execução '13': Tipos incompatíveis."

Alguém tem alguma idéia?

O código é esse aqui:

Application.ScreenUpdating = False
Workbooks.Open Filename:=txt_caminho
Dim origem1 As Worksheet
Dim o1 As String
Dim o2 As String
Dim X As Integer
Dim Counter As Double
Dim PctDone As Single
Dim ComandoSQL As String
Dim NServico As String
Dim Supervisor As String
Dim Sequencia As Integer
Dim Executante As String
Dim Descrição As String
Dim ObsTitulo As String
Dim Parada As String
Dim Inicio As Integer
Dim Duracao As Integer
Dim Semana As Integer
Dim DOMM As Integer
Dim DOMS As Integer
Dim SEGM As Integer
Dim SEGS As Integer
Dim TERM As Integer
Dim TERS As Integer
Dim QUAM As Integer
Dim QUAS As Integer
Dim QUIM As Integer
Dim QUIS As Integer
Dim SEXM As Integer
Dim SEXS As Integer
Dim SABM As Integer
Dim SABS As Integer
Dim PL As Integer
Dim DT As String
Dim OBS As String
Dim Inspetor As String
Dim Turno As String
Dim Status As String
Dim ObsStatus As String

o2 = txt_nome
'Set origem1 = Workbooks(o2).Worksheets("tb_programacao")
Set origem1 = Workbooks(o2).Worksheets("tb_programacao")
lRow = origem1.Range("A" & Rows.Count).End(xlUp).Row

Counter = 1

For X = 2 To lRow

NServico = origem1.Cells(X, 2).Value
Supervisor = origem1.Cells(X, 3).Value
Sequencia = origem1.Cells(X, 4).Value
Executante = origem1.Cells(X, 5).Value
Descrição = origem1.Cells(X, 6).Value
ObsTitulo = origem1.Cells(X, 7).Value
Parada = origem1.Cells(X, 8).Value
Inicio = origem1.Cells(X, 9).Value
Duracao = origem1.Cells(X, 10).Value
Semana = origem1.Cells(X, 11).Value
DOMM = origem1.Cells(X, 12).Value
DOMS = origem1.Cells(X, 13).Value
SEGM = origem1.Cells(X, 14).Value
SEGS = origem1.Cells(X, 15).Value
TERM = origem1.Cells(X, 16).Value
TERS = origem1.Cells(X, 17).Value
QUAM = origem1.Cells(X, 18).Value
QUAS = origem1.Cells(X, 19).Value
QUIM = origem1.Cells(X, 20).Value
QUIS = origem1.Cells(X, 21).Value
SEXM = origem1.Cells(X, 22).Value
SEXS = origem1.Cells(X, 23).Value
SABM = origem1.Cells(X, 24).Value
SABS = origem1.Cells(X, 25).Value
PL = origem1.Cells(X, 26).Value
DT = origem1.Cells(X, 27).Value
OBS = origem1.Cells(X, 28).Value
Inspetor = origem1.Cells(X, 50).Value
Turno = origem1.Cells(X, 51).Value
Status = origem1.Cells(X, 52).Value
ObsStatus = origem1.Cells(X, 53).Value

Call Conecta
ComandoSQL = "SELECT * from tb_programacao"
Set consulta = banco.OpenRecordset(ComandoSQL)
consulta.AddNew
consulta.Fields("NServico") = NServico
consulta.Fields("Supervisor") = Supervisor
consulta.Fields("Sequencia") = Sequencia
consulta.Fields("Executante") = Executante
consulta.Fields("Descrição") = Descrição
consulta.Fields("ObsTitulo") = ObsTitulo
consulta.Fields("Parada") = Parada
consulta.Fields("Inicio") = Inicio
consulta.Fields("Duracao") = Duracao
consulta.Fields("Semana") = Semana
consulta.Fields("DOM MEC") = DOMM
consulta.Fields("DOM SOL") = DOMS
consulta.Fields("SEG MEC") = SEGM
consulta.Fields("SEG SOL") = SEGS
consulta.Fields("TER MEC") = TERM
consulta.Fields("TER SOL") = TERS
consulta.Fields("QUA MEC") = QUAM
consulta.Fields("QUA SOL") = QUAS
consulta.Fields("QUI MEC") = QUIM
consulta.Fields("QUI SOL") = QUIS
consulta.Fields("SEX MEC") = SEXM
consulta.Fields("SEX SOL") = SEXS
consulta.Fields("SAB MEC") = SABM
consulta.Fields("SAB SOL") = SABS
consulta.Fields("PL") = PL
consulta.Fields("D/T") = DT
consulta.Fields("Observação") = OBS
consulta.Fields("Inspetor") = Inspetor
consulta.Fields("Turno") = Turno
consulta.Fields("Status") = Status
consulta.Fields("ObsStatus") = ObsStatus

consulta.Close
banco.Close
Call Desconecta

Counter = Counter + 1
PctDone = Counter / (lRow - 2)
UpdateProgressBar PctDone

Next X

Workbooks(o2).Close SaveChanges:=False
Application.ScreenUpdating = True
MsgBox "Dados importados com sucesso!"
Unload Me
Exit Sub

 
Postado : 05/03/2015 2:07 pm
cleiton jm
(@cleiton-jm)
Posts: 115
Estimable Member
 

Você já tentou tirar os espaços dos nomes das colunas da sua tabela do access , e colocar tipo assim que seria o correto...

consulta.Fields("DOM_MEC") = DOMM
consulta.Fields("DOM_SOL") = DOMS
consulta.Fields("SEG_MEC") = SEGM
consulta.Fields("SEG_SOL") = SEGS

E também ver se realmente você criou alguma coluna no access tipo valor e tá salvando como texto, ou vice-versa ....

 
Postado : 05/03/2015 6:22 pm
(@nxtzr)
Posts: 13
Active Member
Topic starter
 

Você já tentou tirar os espaços dos nomes das colunas da sua tabela do access , e colocar tipo assim que seria o correto...

consulta.Fields("DOM_MEC") = DOMM
consulta.Fields("DOM_SOL") = DOMS
consulta.Fields("SEG_MEC") = SEGM
consulta.Fields("SEG_SOL") = SEGS

E também ver se realmente você criou alguma coluna no access tipo valor e tá salvando como texto, ou vice-versa ....

Cleiton, obrigado pela ajuda. Vou pesquisar a respeito dos espaços nos nomes.

Na verdade, eu acabei esquecendo de mencionar no topico anterior, o erro está acontecendo na hora de abrir o recordset, nessa linha do código:
" Set consulta = banco.OpenRecordset(ComandoSQL) "

 
Postado : 06/03/2015 10:52 am