Newsgroup: it.comp.lang.visual-basic
Titolo: Numeri sequenziali che si ripetono di anno in anno

Eccomi qua di nuovo :-(
Putroppo ci sono tante piccole cosine che non so come risolvere.
Una di queste ve la spiego:
Come dicevo prima il programma deve stampare delle fatture e deve numerarle
in automatico con numeri che partono da 1 e arrivano ad infinito :-D
Fin qui nessun problema.
Il problema č che quando inzia un nuovo anno, il conteggio deve ripartire da
1 ed io non so proprio come fare!
Risuciamo a creare una qualche funzione che riesca a fare sta cosa?
Metto alla prova la vostra inventiva :-D
Spero ci riusciate. Io sto spremendo le meningi ma non riesco a pensare
nulla!

nulla!
Forse non ho capito bene il problema (anzi: ne sono quasi sicuro).
Non basta controllare che non sia passato l'anno prima di stampare una
nuova fattura?
Magari "ricordandosi" la data dell'ultima fattura emessa.
Cioe', diciamo che tu da qualche parte fai un call(Stampa_Fattura),
bene, potresti mettere dentro questa procedura una condizione di
controllo di questo tipo:
if anno(ultima_fattura) < anno_attuale then counter = 1
	else counter = counter +1
dove anno(ultima_fattura) restituisce semplicemente l'anno dell'ultima
fattura emessa.
Boh, spero anch'io di esserti stato utile ;)
Luca

 ha scritto
| Eccomi qua di nuovo :-(
|
| Come dicevo prima il programma deve stampare delle fatture e deve numerarle
| in automatico con numeri che partono da 1 e arrivano ad infinito :-D
| Il problema č che quando inzia un nuovo anno, il conteggio deve ripartire da
| 1 ed io non so proprio come fare!
Function ProssimaFattura(Index as long, ByRef CurrentYear as integer, ByVal NewYear as Integer)
    If CurrentYear <> NewYear Then
        CurrentYear = NewYear
        Index = 0
    Endif
    GetNext = Index + 1
End Sub
Sub StampaFatture()
    annoCorrente = 9999 ' inizializzi ad un anno impossibile
    While "ci sono altre fatture da stampare"
        i = ProssimaFattura(0, annoCorrente, LeggiAnnoDalNuovoRecord())
        stampaNumeroFattura(i)
        "passa al record successivo"
    Wend
End Sub

Ops...
Sub StampaFatture()
    annoCorrente = 9999 ' inizializzi ad un anno impossibile
    i = 0
    While "ci sono altre fatture da stampare"
        i = ProssimaFattura(i, annoCorrente, LeggiAnnoDalNuovoRecord())


 1 ed io non so proprio come fare!
Difficile immaginare un programma per fatture che non si appoggi ad un
database. Immaginiamo dunque di avere una tabella Fatture con, fra gli
altri, i campi: NumeroFattura e DataFattura.
Bene, la prossima fattura sarà:
1) Imposto la query: "SELECT NumeroFattura FROM Fatture WHERE
Year(DataFattura) = " & Year(Now) (al posto di Year(Now) ci si può mettere
l'anno voluto)
2) Se il recordset è vuoto, allora NumeroFattura = 1
3) Altrimenti NumeroFattura = ...Fields(NumeroFattura) + 1
Ciao,
Carlo.

 3) Altrimenti NumeroFattura = ...Fields(NumeroFattura) + 1
Uhm... forse un MAX aiuterebbe...
Ciao

"Lord Rayden" ha scritto:

Oops... sì, ho dimenticato Max!... :-(
Oppure: SELECT TOP 1 NumeroFattura FROM... ORDER BY NumeroFattura DESC"
Bisognerebbe fare un piccolo test e vedere quale è più performante...
Ciao e grazie,
Carlo.


wrote:

Se ci sono due fatture, una con numero 130 ed una con un numero 135,
MAX quale fattura prende?
Immagino la 135!
Purtroppo la 135 era dell'anno 1999, mentre il 2000 si e' chiuso con
la 130!
Ciao a tutti!

 la 130!
E la clausola WHERE dove la mettiamo?
Lě sopra gironzola una clausola WHERE, non hai visto? :-)
Ciao,
Carlo.


wrote:

Hai ragione, ma avevo letto solo il tuo ultimo post dove non c'e'!
Ciao
PS: Noto che in questo periodo molti programmatori sono alle prese con
programmi di gestione e fatturazione! :-))))
Buon lavoro a tutti!

Ho risolto egregiamente con la soluzione proposta da rox!
Tanks!

 ha scritto nel messaggio
news:3c07bf10...@news.libero.it...

Mannaggia!
CHE CASINO!!!
:-D