Newsgroup: it.comp.appl.access
Titolo: Contatore personalizzato

Salve il mio quesito è il seguente:
Ho una tabella che si chiama : T_Incrementi 
che consta dei campi:
ID_progressivo (numerico)
Commessa (testo) (che è la chiave primaria)
Articolo (testo)
Descrizione (testo)
Note (testo)
Vorrei sapere come posso fare a rendere “ID_progressivo”  un contatore
personalizzato in grado di ripartire da  001 all’inizio di ogni anno
(quindi un controllo sulla data corrente), 
sempre in maniera automatica, ad ogni inserimento di record.
In attesa di un vs gentile riscontro porgo distinti saluti
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:el97cj$sjj$1...@news.newsland.it...

Ciao! hai fatto una veloce googolata sui  vecchi messaggi del newsgroup?
Il tuo problema è diffuso e in molti hanno proposto soluzioni alternative.
Sul sitocomune c'è un esempio che potrebbe fare al caso tuo, ma ti ripeto,
prova a fare una ricerca con google gruppi e vedrai che risultati!
M
http://groups-beta.google.com/group/it.comp.appl.access/search?group=it.comp.appl.access&q=contatore+personalizzato

Se non ti chiedo, troppo poiche non ho trovato cio che mi serve, potresti
aiutarmi lo stesso? 
se non ti va fa niente grazie uguale
ciroteo ha scritto:



http://groups-beta.google.com/group/it.comp.appl.access/search?group=it.comp.appl.access&q=contatore+personalizzato
Allora intanto cerchiamo di affrontare i problemi uno alla volta:
- 001 è ovviamente un campo testo, altrimenti dovresti agire sulla
"formattazione" del numero ma non è chiaro che valore memorizzeresti nel
campo. (numeri che iniziano per 0 non ne esistono ..se non sbaglio)
- non possiamo mettere il valore incrementale direttamente in tabella,
dobbiamo passare attraverso una form di inserimento dati, e agire sul valore
predefinito di ogni nuovo record.
- dobbiamo valutare se l'anno è cambiato e ricominciare da capo.
- inoltre direi valutare se non è ancora stato inserito alcun record (ossia
siamo al record 001 dell'anno zero!)
Allora tutto potrebbe essere semplificato inserendo nel valore predefinito
una  formula riadattata dell'esempio sul sito comune.
=IIf(IsNull(DCount("NumeroFattura";"T_Fattura";"NumeroFattura like '?/"
& Format(Date();"aa") &
"'"));'1';DCount("NumeroFattura";"T_Fattura";"NumeroFattura like '?/" &
Format(Date();"aa") & "'")+1) & "/" & Format(Date();"aa")
Ma  credo che dati i problemi che ho segnalato dovremmo agire in vba sul
valore predefinito del nuovo record.
Sull'evento apertura e su nuovo record una roba del genere.
non è testata quindi  lavoraci un po'.
Dim progressivo
Dim conta_record As Integer
conta_record = nz(DCount("*", "Tabella1"))
If conta_record = 0 Then
progressivo = "001"
Else
    If Format(Date, "y") = 1 Then
    progressivo = "001"
    Else
    progressivo = Nz(DMax("ID", "Tabella1")) + 1
'qui usa la funzione format per formattare il numero su tre cifre.
    End If
End If
è arrivata un'amica a coccolarmi e devo lasciare il pc ... sulla ragione
delle coccole vedi mio post di stamattina ... fortune del gambone!

In una form metti un pulsante e sotto scrivi questo codice.
A me funziona.
il campo id è testo lunghezza 3.
Private Sub Comando5_Click()
DoCmd.GoToRecord , , acNewRec
Dim progressivo As String
Dim conta_record As Integer
conta_record = DCount("*", "Tabella1")
If IsNull(conta_record) Then
progressivo = "001"
Me.Id = progressivo
Else
    If Format(Date, "y") = 1 Then
    progressivo = "001"
    Me.Id = progressivo
    Else
    progressivo = Nz(DMax("ID", "Tabella1")) + 1
    Me.Id = Format(progressivo, "000")
    End If
End If
End Sub