Generare codice in modo automatico ed impostarlo come PK

di il
5 risposte

Generare codice in modo automatico ed impostarlo come PK

Salve,

Premetto che la domanda sorge dopo aver tentato di capire come funziona il RIcettario basato su tabelle ricorsive.
Non riesco a capire come viene generato il codice (PK)
In pratica io vorrei ottenere un codice formato da:
Prime tre lettere estratte dalla tabella Tipologia e a seguire un numero crescente.
Faccio un esempio per far capire meglio:
Se sto creando un particolare, il codice dovrà essere: PRT000X
Se sto creando un assieme, ASM000Y
e così via.

Ho provato a cercare ma non riesco a trovare nulla.
Avete qualche suggerimento?
Grazie
Ciao
Claudio

5 Risposte

  • Re: Generare codice in modo automatico ed impostarlo come PK

    Ciao, forse in una query potresti usare la funzione right per estrapolare le ultime 4 cifre del codice...
    Poi fai il dmax per trovare l'ultimo numero progressivo inserito e aggiungi 1 (il numero di 4 cifre da concatenare a PRT o ASM é comprensivo di zeri quindi mediante la funzione len devi verificare il numero delle cifre e aggiungere tanti "0" quante sono le cifre che mancano... Sono stato criptico?
  • Re: Generare codice in modo automatico ed impostarlo come PK

    Grazie Angelo,

    mi hai detto come fare
    Non so farlo, ma imparerò con help e ricerche varie
    Importante era capire come fare

    Thanks
    Claudio
  • Re: Generare codice in modo automatico ed impostarlo come PK

    Precisazione:
    Sicuramente prima della funzione dmax e dopo aver aggiunto 1 dovrai usare la funzione cint (o similare) per convertire stringa in numero ed, infine, dopo aver determinato gli "0" mancanti dovrai ritrasformare in stringa mediante funzione cstr.. Poi concateni il tutto... PrefissoCodice & zeri & numeromaggioraro
  • Re: Generare codice in modo automatico ed impostarlo come PK

    Io farei attenzione tra Codici Identificativi o Parlanti da campi PK.
    Spesso si confondono le 2 cose, ti sei posto la domanda di cosa cambierebbe se tu usassi come PK un Counter, e poi come Campo Indicizzato univoco ed Obbligatorio quel campo Codice...?

    La prima cosa a cui devi pensare è che se questo campo codice viene costruito per AGGREGAZIONE di altri campi... NON PUO' essere una PK in una maschera associata, ti costringe a lavorare con una maschera NON ASSOCIATA in quanto la valorizzazione della chiave avviene in un tempo in cui il Record è già inserito...

    Seconda cosa, sinceramente credo che il nocciolo difficile di una gestione Gerarchica ricorsiva MultiLivello sia ben altro, e fossi in te mi concentrerei proprio sulla struttura tabellare... usando proprio come PK la cosa più semplice, poi quando avrai ben compreso il processo... allora le ottimizzazioni sono doverose.
  • Re: Generare codice in modo automatico ed impostarlo come PK

    Considerazione:
    Concordo con @Alex riguardo al fatto che sia preferibile utilizzare un Counter come PK anziché un campo “complesso” (per indicizzazione, spazio di memoria occupato, implementazioni relazioni ecc.);

    Nel caso si ipotizzi di voler comunque creare una PK con tale campo calcolato bisogna tener presente due cose:
    • - Per essere chiave primaria il campo deve contenere valori univoci e non può avere valori nulli;
      - Deve essere “calcolato” prima di creare un nuovo record e quindi inserito come parte della query di accodamento (aggiunta nuovo record con valore predefinito calcolato)…
    sicuramente non è una cosa semplicissima…

    Forse la soluzione potrebbe essere nell’usare un PK counter e, solo se serve, creare un campo calcolato (quindi non facente parte di una tabella) con i dati aggregati in argomento.
Devi accedere o registrarti per scrivere nel forum
5 risposte