Caros Mestres,
Peço a vossa ajuda para tentar deslindar um erro na abertura de um form.
No evento After Update de uma combo box (cbStatus) tenho o código abaixo, para abrir um segundo form e guardar o valor original da combo box. Deste modo pretendo que se as condições existentes no segundo form não forem verdadeira poder colocar a combo com o valor original.
O problema reside em que o código funciona como pretendido se apenas o form original estiver aberto, se outro form estiver aberto o Access retorna o erro:
Run-time error '2465':
Applicatio-defined or object-defined error.
Eu consigo fazer by pass ao erro (está a trabalhar assim de facto...) garantindo que fecho os outros forms antes de correr o código, contudo não me parece um processo limpo e gostava de perceber porquê.
Alguém faz ideia do porquê ?????
Obrigado antecipadamente, aqui fica o código:
Private Sub cbStatus_AfterUpdate()
Dim varHoje As Date
Dim varOldStat, varAvisado As String
varHoje = Format(Now(), "Short Date")
varOldStat = Me.cbStatus.OldValue
varAvisado = DLookup("[ClienteInformado]", "Issues", "ID=" & Me.ID)
Select Case Me.cbStatus
Case IsNull(Me.cbStatus)
Me.txtCloseDate = Null
Exit Sub
Case Is = "Activo"
Me.txtCloseDate = Null
Exit Sub
Case Is = "Resolvido"
DoCmd.OpenForm "FormFechoReclamacao"
Forms.FormFechoReclamacao.txtOldStatus.Value = varOldStat
Case Is = "Fechado"
If IsNull(Me.txtComentariosFinais) Or Me.txtComentariosFinais = Empty Then
MsgBox ("Não pode fechar uma reclamação sem a Descrição da Resolução" & vbCrLf & _
"Corriga por favor")
Me.cbStatus = varOldStat
Exit Sub
ElseIf varAvisado = -1 Then
Me.cbStatus = "Fechado"
Exit Sub
Else
DoCmd.OpenForm "FormFechoReclamacao"
Forms.FormFechoReclamacao.txtOldStatus.Value = varOldStat
End If
End Select
End Sub
Peço a vossa ajuda para tentar deslindar um erro na abertura de um form.
No evento After Update de uma combo box (cbStatus) tenho o código abaixo, para abrir um segundo form e guardar o valor original da combo box. Deste modo pretendo que se as condições existentes no segundo form não forem verdadeira poder colocar a combo com o valor original.
O problema reside em que o código funciona como pretendido se apenas o form original estiver aberto, se outro form estiver aberto o Access retorna o erro:
Run-time error '2465':
Applicatio-defined or object-defined error.
Eu consigo fazer by pass ao erro (está a trabalhar assim de facto...) garantindo que fecho os outros forms antes de correr o código, contudo não me parece um processo limpo e gostava de perceber porquê.
Alguém faz ideia do porquê ?????
Obrigado antecipadamente, aqui fica o código:
Private Sub cbStatus_AfterUpdate()
Dim varHoje As Date
Dim varOldStat, varAvisado As String
varHoje = Format(Now(), "Short Date")
varOldStat = Me.cbStatus.OldValue
varAvisado = DLookup("[ClienteInformado]", "Issues", "ID=" & Me.ID)
Select Case Me.cbStatus
Case IsNull(Me.cbStatus)
Me.txtCloseDate = Null
Exit Sub
Case Is = "Activo"
Me.txtCloseDate = Null
Exit Sub
Case Is = "Resolvido"
DoCmd.OpenForm "FormFechoReclamacao"
Forms.FormFechoReclamacao.txtOldStatus.Value = varOldStat
Case Is = "Fechado"
If IsNull(Me.txtComentariosFinais) Or Me.txtComentariosFinais = Empty Then
MsgBox ("Não pode fechar uma reclamação sem a Descrição da Resolução" & vbCrLf & _
"Corriga por favor")
Me.cbStatus = varOldStat
Exit Sub
ElseIf varAvisado = -1 Then
Me.cbStatus = "Fechado"
Exit Sub
Else
DoCmd.OpenForm "FormFechoReclamacao"
Forms.FormFechoReclamacao.txtOldStatus.Value = varOldStat
End If
End Select
End Sub