Numerazione progressiva in base all'anno

di il
7 risposte

Numerazione progressiva in base all'anno

Buonasera, in una maschera di inserimento dati ho il campo chiamato DDT_Nr dove vorrei che comparisse il numero progressivo del DDT che si incrementasse ogni volta che viene inserito un nuovo DDT e che riniziasse a contare da 1 ogni volta che inizi un nuovo anno.
in rete ho trovato il seguente codice da mettere come valore predefinito nel campo DDT_Nr :

="AN" & Format(Date();"aa") & "/" & Format(IIf(IsNull(DMax("[DDT_Nr]";"[Documenti_di_trasporto]";"[DDT_Nr] like 'AN" & Format(Date();"aa") & "/????'"));1;Right(DMax("[DDT_Nr]";"[Documenti_di_trasporto]";"[DDT_Nr] like 'AN" & Format(Date();"aa") & "/????'");4)+1); 0000)

Il codice funziona e mi restituisce il valore AN19/0001 e si incrementa correttamente "AN19/0002" ogni volta che emetto un DDT, vorrei fare in modo che il codice restituito sia del tipo 0001/2019 e si incrementasse in questa maniera "0002/2019 ". Sapete indicarmi come devo correggere il codice?

Grazie

7 Risposte

  • Re: Numerazione progressiva in base all'anno

    Basta che ricostruisci la logica del codice da te presentato (che può essere, sicuramente, ottimizzato) comunque l'argomento è stato trattato innumerevoli volte (in questo ed in altri forum) quindi, se vuoi, effettua una ricerca con: "numerazione progressiva" di MS-Access e costruisci il tuo contatore con il numero massimo trovato (incrementato) con "/" e l'anno a seguire
  • Re: Numerazione progressiva in base all'anno

    Grazie willy55, il problema è che, non capendo io nulla di codici, non riesco ad ottimizzare quel codice. Ho provato più volte ma mi restituisce sempre qualche errore. Il codice trovato in rete l'ho ottimizzato per il mio database, ovvero la tabella "Documenti_di_Trasporto" e la casella "DDT_Nr" sono quelle del mio Database ma più di quello non riesco a modificare

    Grazie
  • Re: Numerazione progressiva in base all'anno

    Se non approfondisci gli argomenti sarà difficile anche solo mettere in atto una soluzione trovata. Come già suggerito, effettua una ricerca, documentati, con la guida, sulle funzioni impiegante negli esempi e presenta infine i tuoi tentativi descrivendo quale sia la scelta applicata.
    Guarda ce si tratta di una sola riga di codice.
  • Re: Numerazione progressiva in base all'anno

    Quel codice:

    ="AN" & Format(Date();"aa") & "/" & Format(IIf(IsNull(DMax("[DDT_Nr]";"[Documenti_di_trasporto]";"[DDT_Nr] like 'AN" & Format(Date();"aa") & "/????'"));1;Right(DMax("[DDT_Nr]";"[Documenti_di_trasporto]";"[DDT_Nr] like 'AN" & Format(Date();"aa") & "/????'");4)+1); 0000)

    funziona benissimo, solamente che mi restituisce un valore del tipo "AN19/0001" con le mie conoscenze (pari a zero di codici) non riesco a modificarlo come vorrei per ottenere un valore del tipo "0001/2019".
    Ho fatto ricerche ma non ne sono venuto a capo e, se provo a modificare il codice mi appare l'avvertimento "Errore di sintassi nell'espressione - E' possibile sia stato immesso un operando senza un operatore".

    Grazie ancora
  • Re: Numerazione progressiva in base all'anno

    La premessa è che abbiamo capito che non hai le conoscenze..., ma la domanda è, dantoti le indicaizoni per capire come operare, hai voglia di metterti a cercare per risolvere il problema in parte studiantoti qualche Guida e facendo qualche prova...?
    Se la TUA risposta è NO, io non faccio il programmatore e mi serve un aiuto completo da Copia/Incollare..., la nostra risposta è "peccato".

    Nel caso tu abbia invece voglia di darti da fare, devi intervenire invertendo i 2 Blocchi separati e riconoscibili dal Carattere "/", eliminare "AN", formattare la data non a 2 cifre ma a 4 che trovi descritta quì:
    https://support.office.com/it-it/article/funzione-format-6f29d87b-8761-408d-81d3-63b9cd842530

    Buon lavoro.
  • Re: Numerazione progressiva in base all'anno

    Vorrei chiarire che non sono certo il tipo che aspetta la soluzione senza fare niente visto che ho creato il mio database da 0 senza avere conoscenze di base ma leggendo un libro su access e informandomi in rete.

    In tutti i modi ho gia provato a togliere "AN" e formattare la data con quattro cifre:

    =Format(Date();"aaaa") & "/" & Format(IIf(IsNull(DMax("[DDT_Nr]";"[Documenti_di_trasporto]";"[DDT_Nr] like 'Format(Date();"aaaa") & "/????'"));1;Right(DMax("[DDT_Nr]";"[Documenti_di_trasporto]";"[DDT_Nr] like 'Format(Date();"aaaa") & "/????'");4)+1);"0000")

    L'errore restituito è quello già indicato: "Errore di sintassi nell'espressione - E' possibile sia stato immesso un operando senza un operatore"

    Thanks
  • Re: Numerazione progressiva in base all'anno

    Comincia a suddividere i vari elementi con cui vuoi costruire la stringa conclusiva, ed impara ad usare il Debug.
    Ad esempio se lo impieghiamo con due parti presenti nelle tue istruzioni:
    
    Debug.Print Format(Date(),"aaaa")
    Debug.Print DMax("[DDT_Nr]","[Documenti_di_trasporto]")
    
    dovresti osservare ciò che restituiscono.
    Partendo da queste dovrai valutare le altre funzionalità a contorno.
Devi accedere o registrarti per scrivere nel forum
7 risposte