Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    grazie teolo

  2. #12
    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

  3. #13
    ...Terrible warlords, good warlords, and an english song

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    54
    Originariamente 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....
    .... hai ragione è la vecchiaia che avanza
    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:

    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
    molto + veloce no?!?!

    Teolo

  5. #15
    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

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    54
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.