Ciao peppeZH,
e cosa dice la descrizione dell'errore 3314? Suppongo qualcosa tipo:
Errore di run-time '3314':
Inserire un valore nel campo '<tabella><campo>'.
nel qual caso probabilmente quel campo ha la proprietà "Richiesto = Sì" mentre la routine tenta di assegnare il valore Null.
Quindi devi decidere cosa fare. Per esempio una di queste cose:
- Saltare il campo quando "pulisci".
- Cambiare la proprietà "Richiesto".
- Mettere a inizio routine:
On Error Resume Next
Io preferirei la 1, per esempio così:
Private Sub ClearCtls(ByVal frm As Access.Form)
Dim ctl As Access.Control
For Each ctl In frm.Controls
Select Case TypeName(ctl)
Case "TextBox", "ComboBox"
If Len(frm.RecordSource) > 0 And Len(ctl.ControlSource) > 0 Then
If frm.RecordsetClone.Fields(ctl.ControlSource).Required Then
' SKIP
Else
ctl.Value = Null
End If
Else
ctl.Value = Null
End If
Case "SubForm"
ClearCtls ctl.Form
Case Else
' DO NOTHING
End Select
Next
Set ctl = Nothing
End Sub