Anno nuovo riparte il contatore

giovedì 04 gennaio 2007 - 18.48

randisto Profilo | Newbie

ciao, ho creato un piccolo database x gestire il mio lavoro, mancano alcune cosette e poi è terminato.
partiamo con il primo piccolo problema.
Numero Fatture, ad ogni nuova fattura il numero aumento, come posso fare affinchè con l'anno nuovo riparta da 1?
grazie x l'aiuto

0v3rCl0ck Profilo | Guru

ciao,

se non ho capito male la soluzione potrebbe essere la seguente: il campo "NumeroFattura" non deve essere contatore, ma semplicemente un numerico, poi devi avere un altro campo "Anno" dove registrare l'anno della fattura, ed infine devi metterli in chiave primaria, così da potere avere fattura1-anno2006 e fattura1-anno2007


Enjoy it

randisto Profilo | Newbie

ma il numero si deve incrementare da solo e con il 1 di gennaio deve ripartire da 1

amelix Profilo | Expert

Una domanda.... In che formato è il DB?
Access? MySql?

In base al tipo di DB si possono fare cose diverse.
Andrea
http://amelix.blogspot.com/index.html

oasi56 Profilo | Newbie

Prova con questa soluzione:
Private Sub NumFatturaN_GotFocus()

Dim MaxNumFattura As Long
Dim MaxAnno As Integer

Me![AnnoN] = Format(Me![DataN], "yy")
If (Me![NumFatturaN] = 0) Then
MaxNumFattura = Nz(DMax("[NumFattura]", "Fatture", "[Anno]=" & Me![AnnoN]))
MaxAnno = Nz(DMax("[Anno]", "Fatture"))
If (Me![AnnoN] > MaxAnno) Then
Me![NumFatturaN] = 1
Else
Me![NumFatturaN] = MaxNumFattura + 1
End If
End If

End Sub
Dova AnnoN è una casella di testo formato data YY e DataN è una casella di testo formato data breve
Se non riesci mandami indirizzo Email di do la soluzione
Ciao e fammi sapere se ti funziona
Mauro

randisto Profilo | Newbie

scusate, il db è in access.

indirizzo mail randisto@libero.it

86Marco Profilo | Expert

Ciao Oasi56,
non ho potuto fare a meno di leggere il tuo articolo con il codice che hai postato per la numerazione autimatizzata di una fattura con il cambio di anno!
Ho provato ad adottarlo nel mio database ma non ci riesco!
Supponi che io abbia una tabella fattura cosi composta:
tblFatture:
idfattura [numerico]
data fattura [Data/ora]
Descrizione [Testo]

affinche il numero di fattura mi si autoincrementi facendo caso all'anno, come dovrei impostare il codice? con che parametri?
Non sono un esperto, purtroppo, ma siccome sto cercando di creare una piccola applicazione mi servirebbe qualche parere molto esperto!
Spero che tu mi possa aiutare!
Grazie mille, spero di leggere presto una risposta
Marco

amelix Profilo | Expert

Io x principio metto SEMPRE un ID contatore e, come nel tuo caso, una chiave secondaria con le caratteristiche volute.
Userei 2 campi aggiuntivi (Anno e Progressivo) e, purtroppo, su Access non hai molte scelte...

Puoi creare una qwery di inserimento che, come si diceva nel messaggio di prima, cerca il MAX di ID x quell'anno
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ma non mi piace...
Andrea
http://amelix.blogspot.com/index.html

oasi56 Profilo | Newbie

Mandami indirizzo Email che ti invio copia della maschera cosi copi e edi come funziona.
Ciao Mauro

randisto Profilo | Newbie

io te l'ho gia messo l'indirizzo, se non era x me mandami una copia ugualmente, grazie

oasi56 Profilo | Newbie

Ho spedito controlla poi fammi sapere
Ciao

randisto Profilo | Newbie

ricevuto grazie.
ora ci do un'occhiata e poi ti faccio sapere.

randisto Profilo | Newbie

forse sbaglio io.
ho fatto delle prove, usando il tuo codice ma non mi incrementa il num fattura.

oasi56 Profilo | Newbie

Di sicuro sono anni che lo adopero per le fatture e funziona benissimo
Ciao
Controlla bene in nomi dei campi e ad un caso cambiali in base al tuo database

randisto Profilo | Newbie

una cosa che ho notato.
i primi due campi della maschera, non sono associati ai relativi campi della tabella, giusto?

oasi56 Profilo | Newbie

Aspetta ti invio il database in formato ridotto e poi controlli
Mauro

Cteniza Profilo | Guru

La norma per la numerazione dei documenti non dice che si deve reiniziare da 1 ogni anno ma che la numerazione all'interno dell'anno è progressiva.
Altra cosa invece, a mio avviso erratissima SEMPRE è utilizzare un campo contatore anche come "codifica", esempio:
id - identificatore del record e anche codice (prodotto, cliente, numero bolla, numero ordine, ecc)
In ogni caso consiglio di avere sempre 2 campi diversi (ad esempio id e numero fattura).
Il dettaglio delle righe deve essere tenuto insieme da:
id (progressivo proprio del dettaglio) pk
id testata (foreign key sulla testata)


randisto Profilo | Newbie

infatti io cerco sempre di avere un id univoco contatore ed es. il numero univoco x il cliente
scusa se ti correggo ma le fatture devono partire dal num 1 in poi ad ogni anno nuovo (almeno cosi mi hanno insegnato)

Cteniza Profilo | Guru

randisto:
>infatti io cerco sempre di avere un id univoco contatore ed es. il numero univoco x il cliente
forse non ci siamo capiti, in presenza di una anagrafica clienti io consigliavo di avere 2 campi.
id (contatore)
codice cliente
Entrambi ovviamente univoci ma pk = id

randisto Profilo | Newbie

infatti io prima ho messo 2 campi un contatore ed un cod cliente, magari si capisce male ma se guardi meglio è cosi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5