Newsgroup: it.comp.appl.access
Titolo: Numerazione Progressiva Fattura

Ciao,
sono un neofita di Access..
ho bisogno di aiuto per realizzare un database.
Vorrei una numerazione progressiva dei record, in un campo Cod.
simile a quella usata per le fatture (es. 01/16, 02/16, 03/16)
che si resetti quando cambio l'anno in un campo DataRic.
 
Ho provato con questa Stringa VBA
 
Private Sub elMEDACC_AfterUpdate()
Dim nNewNumber As Variant
nNewNumber = DMax("Cod", "Database", "Year(DataRic)=" & Year(Date))
Me.Cod = IIf(IsNull(nNewNumber), 0, nNewNumber) + 1
End Sub
 
Ma se cambio anno ripete l'ultimo numero invece di resettare.
Vi prego aiutatemi sto impazzendo.
Grazie in ant.


Prova ad adattare questo
Me![N_Fattura] = "" & Format(Date, "yyyy") & "" & Format(IIf(IsNull(DMax("[N_Fattura]", "[tblFattura]", "[N_Fattura] like '" & Format(Date, "yyyy") & "????'")), 1, right(DMax("[N_Fattura]", "[tblFattura]", "[N_Fattura] like '" & Format(Date, "yyyy") & "????'"), 4) + 1), "0000")
otterrai 20160001
 
se vuoi inserire un separatore ad esempio /
Me![N_Fattura] = "" & Format(Date, "yyyy") & "/" & Format(IIf(IsNull(DMax("[N_Fattura]", "[tblFattura]", "[N_Fattura] like '" & Format(Date, "yyyy") & "????'")), 1, right(DMax("[N_Fattura]", "[tblFattura]", "[N_Fattura] like '" & Format(Date, "yyyy") & "????'"), 4) + 1), "0000")
se vuoi inserire anche un prefisso esempio ft-
Me![N_Fattura] = "ft-" & Format(Date, "yyyy") & "/" & Format(IIf(IsNull(DMax("[N_Fattura]", "[tblFattura]", "[N_Fattura] like '" & Format(Date, "yyyy") & "????'")), 1, right(DMax("[N_Fattura]", "[tblFattura]", "[N_Fattura] like '" & Format(Date, "yyyy") & "????'"), 4) + 1), "0000")


Come si fa a fare DEBUG su una cosa simile...?
Credo sia più funzionale scrivere una Funzione Public, ed internamente strutturare un codice più facilmente leggibile e debuggabile... è una buona abitudine.
 
@Alex

Antonio Luciani expressed precisely :

TableName è il nome della tabella che contiene le fatture
DataFat è il nome del campo che ne contiene la data
NumFat è il nome del campo che ne contiene il numero
=================================
Public Function NumeroFattura(TableName As String, _
                DataFat As String, _
                NumFat As String)
Dim RS As Recordset, SQL As String
 
SQL = "SELECT TOP 1 " & TableName & "." & DataFat & ", "
SQL = SQL & TableName & "." & NumFat & " "
SQL = SQL & "FROM " & TableName & " "
SQL = SQL & "ORDER BY " & TableName & "." & DataFat & " DESC;"
Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
 
If Year(RS![DataFat]) = Year(Date) Then
    NumeroFattura = RS![NumFat] + 1
ElseIf Year(RS![DataFat]) < Year(Date) Then
    NumeroFattura = 1
Else
    NumeroFattura = "Indietro non si torna!"
End If
 
End Function
=====================================
 
In sede di stampa aggiungerai poi il /Anno con
"/" & Year([DataFat])
 
Bruno

Se la tabella non ha dati... mi sbaglio oppure ottieni un  errore... senza la gestione..? 
Sono arrugginito ma mi pare che la.sola interrogazione sia causa di errore se Rs è in EOF...
 
In ogni caso questo è il modo giusto...
 
@ALEX

@Alex laid this down on his screen :

Sì, se la tabella è vuota la formula dà errore,
non ci avevo pensato.
Si fa presto a correggere... io però non ne ho voglia.
 
Ciao
Bruno