FabioPaes 4/2/2017, 22:28
Este erro ocorre nesta linha da Função: rst.MoveLast
Que move para o ultimo registro... Como não há nenhum registro, ele emite o alerta!
Teremos que fazer tratamento para esse erro na Função!
Altere sua Função para:
- Código:
Public Function ExportSisengHTFunction()
'ahteixeira (2017) para MaximoAccess
'Alterada por FabioPaes em 04/02/2017
'Inclusao do tratamento Erro
On Error GoTo F
Dim rst As Recordset, varRecCount As Integer, varCount As Integer
Dim varArq As String
Dim DB As Database
Set DB = CurrentDb()
Set rst = DB.OpenRecordset("SisengHT", dbOpenTable)
rst.MoveLast
varRecCount = rst.RecordCount
rst.MoveFirst
varArq = Forms!frmHorasSiseng!local & "\SisengHT.csv"
Open varArq For Output As #1
For varCount = 1 To varRecCount
Print #1, rst!Equipamento & ";"; rst!UA_Trabalhada & ";" & rst!DataPadrao & ";" & Format(rst![Hora Decimal], "Fixed")
rst.MoveNext
Next varCount
Close #1
rst.Close
Set DB = Nothing
MsgBox "Horas Trabalhadas Exportadas com Sucesso!!!", vbExclamation
F:
Select Case Err.Number
Case 3021
MsgBox "Não existem Dados para serem exportado no período!!!", vbInformation, "Atenção!"
Case 0
Exit Function
Case Else
MsgBox Err.Number & " - " & Err.Description, vbCritical, "Erro!"
Exit Function
End Select
End Function
Altere também o comando do Botão Gerar dados para:
- Código:
Private Sub Comando7_Click()
On Error Resume Next
If IsNull(Me.txtDataInicio) Then
MsgBox "Data Inicial deve ser Informada!", vbCritical, "Atenção"
Me.txtDataInicio.SetFocus
Exit Sub
ElseIf IsNull(Me.txtDataFim) Then
MsgBox "Data Final deve ser Informada!", vbCritical, "Atenção"
Me.txtDataFim.SetFocus
Exit Sub
ElseIf IsNull(Me.txtDatapadrao) Then
MsgBox "Data Padra deve ser Informada!", vbCritical, "Atenção"
Me.txtDatapadrao.SetFocus
Exit Sub
ElseIf IsNull(Me.Quadro55) Then
MsgBox "Selecioni um relatorio", vbCritical, "Info"
Me.Quadro55.SetFocus
Exit Sub
Else
Call DadosFunction
End If
If Me.Quadro55.Value = 1 Then
DoCmd.RunMacro "ExportSisengHT", acViewPreview
End If
If Me.Quadro55.Value = 2 Then
DoCmd.RunMacro "ExportSisengHP", acViewPreview
End If
If Me.Quadro55.Value = 3 Then
DoCmd.RunMacro "ExportSisengOf_Equip", acViewPreview
End If
If Me.Quadro55.Value = 4 Then
DoCmd.RunMacro "ExportSisengOf_Guind", acViewPreview
End If
End Sub
No botão foi add o Comando
Exit Sub para todas as verificações de preenchimento, pois se for verdadeiro nao tem porque passar para o próximo passo!
Ja na Função add o tratamento de erro, pois pode no periodo informado nao haver dados para serem exportados... entao ele emite aviso... Simule com o periodo 04/02/17 a 04/02/17.
.................................................................................
_____________________________________________________________________
Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
A dica do Colega foi útil? Agradeça!
O importante não saber tudo, mas sim a Onde procurar!