grazie teolo
grazie teolo
teolo il tuo codice era perfetto salvo due piccoli particolari:
1 con il programma appena installato e database vuoto dava errore;
2 al nuovo anno il numero non ripartiva da 1 ma continuava.
ho fatto una piccola modifica e posto il codice completo per eventuali interessati.
' nel modulo.bas
Public tna
Public six As String
Public dex As String
Function Incrementa_Indice(ByVal old_id As String) As String
Dim new_id As String, left_id As String, right_id As String
'controlla che l'ID sia corretto
If InStr(1, old_id, "/") <> 0 Then
'************************PARTE SINISTRA DELL'ID**********************
'recupera le cifre a sinistra di /
left_id = Left(old_id, InStr(1, old_id, "/") - 1)
'incrementa new_id
left_id = CInt(left_id + 1)
'aggiunge uno 0 se il numero è minore di 10
If left_id <= 9 Then
left_id = CStr("0" & left_id)
Else
left_id = CStr(left_id)
End If
'************************PARTE DESTRA DELL'ID*************************
'se l'anno è rappresentato sempre con due cifre
right_id = Right(old_id, 2)
'se l'anno non corrisponde con quello della data di sistema assegna a right_id le due cifre dell'anno corrente
If right_id <> Right(Year(Date), 2) Then
right_id = Right(Year(Date), 2)
left_id = "01" ' ho aggiunto 01 per ogni nuovo anno
End If
'Genera il nuovo id
new_id = left_id & "/" & right_id
Incrementa_Indice = new_id
Else
MsgBox "L'identificatore non è corretto", vbInformation, "Errore:"
Incrementa_Indice = old_id
End If
End Function
'nel form
Private Sub CNuovo_Click()
tna = Text1.Text
If tna = "" Then
six = "01"
dex = Right(Year(Date), 2)
Text1.Text = six & "/" & dex
Else
Text1.Text = Incrementa_Indice(Text1.Text)
End If
End Sub
ho provato il codice e funziona a meraviglia, si può usare sia sui Dtt che sulle fatture
by
gyonny
...Terrible warlords, good warlords, and an english song
.... hai ragione è la vecchiaia che avanzaOriginariamente inviato da gyonny
teolo il tuo codice era perfetto salvo due piccoli particolari:
1 con il programma appena installato e database vuoto dava errore;
2 al nuovo anno il numero non ripartiva da 1 ma continuava....![]()
comunque ti vorrei far notare che puoi eliminare le tre variabili public che hai dichiarato ed edseguire direttamente il controllo sul contenuto della textbox in questo modo:
molto + veloce no?!?!codice:Private sub CNuovo_Click() If Text1.Text="" Then Text1.Text="01/" & Right(Year(Date),2) Else Text1.Text=Incrementa_Indice(Text1.Text) End If End sub
Teolo
vero, cosi è più veloce.
avevo messo le tre variabili public perchè volevo usare lo stesso per le fatture.
Ma ora ho un altro problema
inserendo un nuovo record con addnew, la funzione trova la text vuota e mi da errore o riparte da 01/02.
come posso risolverlo?
by
gyonny
Puoi recuperare l'ultimo valore dell'id dal recordset ed assegnarlo ad una variabile visibile a tutto il form.
N.B.: L'incremento dovrai effettuarlo sulla variabile e non + sul contenuto della textbox.
Bye
Teolo