Boa tarde.
Possuo uma tabela em Excel que estou "portando" para o Access. Essa planilha é cheia de fórmulas do tipo PROCV, que buscam informações em outras planilhas para manter os dados sempre atualizados. O fato é que, como o Access não aceita fórmulas nas tabelas, pensei em resolver esse problema da atualização dessa tabela com um botão "Atualizar dados".
Criei um botão que passa registro por registro e busca os dados das tabelas correspondentes e vai atualizando a tabela tabRota.
O problema é que, quando eu clico, simplesmente aparece a mensagem final (atualizado com sucesso) porém nada é realizado. Essa tabela é bem grande e meu pc é lento, porém o botão retorna essa msg com menos de 1 segundo, o que significa que ele não passou nem sequer por um registro do loop.
Não estou sabendo encontrar o erro, poderiam me ajudar?
Desde já obrigado!
Segue o código:
Segue o link do projeto:
alantaru.000webhostapp.com/BANCO_DE_DADOS/atualizar_tabela.zip
Possuo uma tabela em Excel que estou "portando" para o Access. Essa planilha é cheia de fórmulas do tipo PROCV, que buscam informações em outras planilhas para manter os dados sempre atualizados. O fato é que, como o Access não aceita fórmulas nas tabelas, pensei em resolver esse problema da atualização dessa tabela com um botão "Atualizar dados".
Criei um botão que passa registro por registro e busca os dados das tabelas correspondentes e vai atualizando a tabela tabRota.
O problema é que, quando eu clico, simplesmente aparece a mensagem final (atualizado com sucesso) porém nada é realizado. Essa tabela é bem grande e meu pc é lento, porém o botão retorna essa msg com menos de 1 segundo, o que significa que ele não passou nem sequer por um registro do loop.
Não estou sabendo encontrar o erro, poderiam me ajudar?
Desde já obrigado!
Segue o código:
- Código:
Private Sub cmdAtualizarDadosRota_Click()
On Error GoTo ErrorHandler
Dim SerieAtual As String
Dim ContadorInicialAtual As String
Dim ContadorFinalAtual As String
Dim rsRota As DAO.Recordset, strSQL As String 'Rota
Dim rsMapa As Recordset, SqlMapaAtual As String 'Mapa
Dim rsFleet As Recordset, SqlFleetAtual As String 'Contador Fleet
Dim rsPapel As Recordset, SqlPapelAtual As String 'Papel
strSQL = "tabRota"
Set rsRota = CurrentDb.OpenRecordset(strSQL)
With rsRota
If Not .BOF And Not .EOF Then
.MoveLast
.MoveFirst
While (Not .EOF)
SerieAtual = ![Serie] 'pega a serie atual
SqlMapaAtual = "SELECT Serie, Status, ModeloSimpress, Fila, Empresa, PlantaInstalada, LocalInstalacao, RAMAL, Horario, RuaRef, DEPARTAMENTO, Contrato " & _
"FROM Mapa " & _
"WHERE Serie='" & SerieAtual & "';"
SqlFleetAtual = "SELECT Serie, NumerodePaginas, TonerPretoPorcentagem, ImpressoesTotalemPreto, ImpressoesTotalColoridas " & _
"FROM Contador " & _
"WHERE Serie='" & SerieAtual & "';"
SqlPapelAtual = "SELECT Serie, TotalFv, A4Resma, Media " & _
"FROM Papel " & _
"WHERE Serie='" & SerieAtual & "';"
Set rsMapa = CurrentDb.OpenRecordset(SqlMapaAtual)
Set rsFleet = CurrentDb.OpenRecordset(SqlFleetAtual)
Set rsPapel = CurrentDb.OpenRecordset(SqlPapelAtual)
If .Updatable Then
.Edit
If Not rsMapa.RecordCount = 0 Then
'Dados do Mapa'
![Status] = IIf(IsNull(rsMapa!Status), "", rsMapa!Status)
![Modelo] = IIf(IsNull(rsMapa!ModeloSimpress), "", rsMapa!ModeloSimpress)
![Fila] = IIf(IsNull(rsMapa!Fila), "", rsMapa!Fila)
![Empresa] = IIf(IsNull(rsMapa!Empresa), "", rsMapa!Empresa)
![PlantaInstalada] = IIf(IsNull(rsMapa!PlantaInstalada), "", rsMapa!PlantaInstalada)
![LocalInstalacao] = IIf(IsNull(rsMapa!LocalInstalacao), "", rsMapa!LocalInstalacao)
![Ramal] = IIf(IsNull(rsMapa!Ramal), "", rsMapa!Ramal)
![Horario] = IIf(IsNull(rsMapa!Horario), "", rsMapa!Horario)
![Rua] = IIf(IsNull(rsMapa!RuaRef), "", rsMapa!RuaRef)
![DeptoAlmox] = IIf(IsNull(rsMapa!DEPARTAMENTO), "", rsMapa!DEPARTAMENTO)
![Contrato] = IIf(IsNull(rsMapa!Contrato), "", rsMapa!Contrato)
'Dados do Contador'
![VidaUtilToner] = IIf(IsNull(rsFleet!TonerPretoPorcentagem), "", rsFleet!TonerPretoPorcentagem)
![ContFinal] = IIf(IsNull(rsFleet!NumerodePaginas), "", rsFleet!NumerodePaginas)
'Dados do Papel'
![Media] = IIf(IsNull(rsPapel!Media), "", rsPapel!Media)
![A4] = IIf(IsNull(rsPapel!A4Resma), "", rsPapel!A4Resma)
![A3] = IIf(IsNull(rsPapel!A3Media), "", rsPapel!A3Media)
'Fórmulas'
ContadorInicialAtual = IIf(IsNull(![ContInicial]), "", ![ContInicial])
ContadorFinalAtual = Val(![ContFinal])
![Producao] = ContadorFinalAtual - ContadorInicialAtual
![Estoque] = (Val(![A4]) * 500) - Val(![Producao])
If Val(![VidaUtilToner]) <= 5 Then
![MandarToner] = "Mandar Toner"
Else
![MandarToner] = "Toner OK"
End If
MsgBox "1"
Else
MsgBox "A tabela de Rota está Vazia. Favor Verificar."
End If
.Update
'And finally we will need to confirm the update
End If
Set rsMapa = Nothing
Set rsFleet = Nothing
Set rsPapel = Nothing
.MoveNext
'(Pause com CTRL+Break)
Wend
End If
.Close
End With
ExitSub:
Set rsRota = Nothing
MsgBox "A tabela de Rota foi atualizada com sucesso."
Exit Sub
ErrorHandler:
Resume ExitSub
End Sub
Segue o link do projeto:
alantaru.000webhostapp.com/BANCO_DE_DADOS/atualizar_tabela.zip
Última edição por alantaru em 12/12/2018, 10:22, editado 1 vez(es)