Ciao a tutti, sono nuovo e mi scuso fin dall'inizio per eventuali miei errori sia di dicitura che sintassi relativamente al linguaggio di programmazione, in quanto sono neofita e tanto ignorante in materia (autodidatta ndr).
Quindi volevo sapere come mai non riesco a far funzionare un contatore di cui vi posto il modulo e routine di evento:
modulo:

codice:
Function fctAnnoNr(dte As Date) As String

Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String

Set db = CurrentDb
Set rst = db.OpenRecordset("datiIncarico", dbOpenDynaset, dbSeeChanges)

With rst

.MoveLast

If .RecordCount = 1 Then                        'Il primo record nella tabella

            fctAnnoNr = Right(Year(dte), 2) & "-0001"
        Exit Function
    End If
    .Close
End With
                                                'Nella tabella esistono record
    
strSQL = "SELECT Year([DATAINCARICO]) AS Anno " _
        & "FROM datiIncarico " _
        & "WHERE Year([DATAINCARICO])=" & Year(dte) _
        & " ORDER BY datiIncarico.DATAINCARICO DESC;"
    
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)

With rst

.MoveLast

        fctAnnoNr = Right(Year(dte), 2) & "-" & Right("0000" & .RecordCount, 4)
.Close
db.Close

End With

Set rst = Nothing
Set db = Nothing

End Function

routine:
Private Sub DATA_INCARICO_AfterUpdate()
If Me.NewRecord Or Right(Year(Me.DATA_INCARICO), 2) <> Left(Me.NS_RIF, 2) Then

        DoCmd.RunCommand acCmdSaveRecord
        Me.NS_RIF = fctAnnoNr(Me.DATA_INCARICO)
    Else
        DoCmd.RunCommand acCmdSaveRecord
End If

End Sub
Per ulteriori informazioni il mio db (Access) è già operativo e contiene già dei dati e pertanto il mio attuale campo contatore (NSRIF) non parte da zero.
Grazie e ciao
Farfisa