Sequenza Numerica

di il
13 risposte

Sequenza Numerica

Salve.
Premetto di essere alle prime esperienze con il VBA.
Dovrei creare a un codice che controlli una sequenza numerica e avvisi di eventuali mancanze partendo da un campo del genere:

Campo "Finale" della tabella "Codici"

3 ' inizio tabella
4
5
7 ' manca il 6
8
9
0
1
2
4 ' manca il 3
5
6
7
9 ' manca l'8
0
1
3 ' manca il 2
4
5
6
7
8
9
0
ecc

Grazie.

13 Risposte

  • Re: Sequenza Numerica

    Quella Tabella ha un campo utilizzabile per l'ordinamento... perché così com'è non è bellissimo... oltretutto non avendo una Chiave come puoi individuare il record specifico...?
    In ogni caso ipotizzando di mantenere quell'ordine servirebbe capire cosa vuoi ottenere...
    In sostanza se vuoi ottenere affianco al numero che segue un buco la segnalazione ti basta un controllo del numero precedente... se invece vuoi sapere quanti e quali... il codice dovrà essere più articolato.
    In ogni caso senza una PK lascia perdere il primo esempio anche se forse più adatto in quanto non potrai mai discriminare la posizione.
  • Re: Sequenza Numerica

    Grazie x la celeritaà.
    Dunque quei numeri sono l'ultima cifra a destra di una serie (es. YA9876543) di cartellini che ogni 100 cambiano serie e non è quasi mai consecutiva. Quindi l'ordinamento c'è ma è solo riferibile alla serie dei cento. Tra questa tutte queste serie dovrei solo individuare il cartellino mancante...non so se sono abbastanza chiaro...
  • Re: Sequenza Numerica

    Per essere più chiaro...le serie da cento dovrebbero essere complete. Se manca un cartellino il codice dovrebbe segnalarlo. L'unico modo che ho pensato è quello di lavorare sulla sequenza 1 2 3 4 5 6 7 8 9 0 che poi ricomincia..ma posso cambiare idea e progetto..
  • Re: Sequenza Numerica

    viki1968 ha scritto:


    quei numeri sono l'ultima cifra a destra di una serie (es. YA9876543) di cartellini che ogni 100 cambiano serie e non è quasi mai consecutiva. Quindi l'ordinamento c'è ma è solo riferibile alla serie dei cento. Tra questa tutte queste serie dovrei solo individuare il cartellino mancante...non so se sono abbastanza chiaro...
    Per me non è chiaro.
    Potresti elencare una decina di serie per capire meglio cosa conviene prelevare?
    Almeno per me, potresti elencare tutti i campi della tabella dove risiedono questi valori? Magari c'è dell'altro che potrebbe tornarci utile. Anche qui almeno 3 record di esempio mi lamperebbero meglio le idee.

    viki1968 ha scritto:


    L'unico modo che ho pensato è quello di lavorare sulla sequenza 1 2 3 4 5 6 7 8 9 0 che poi ricomincia..ma posso cambiare idea e progetto..
    Secondo me non è affatto una buona idea. E se poi hai un salto multiplo di circa una "decina"?

    P.S.: ti invitiamo a leggere attentamente i regolamenti dei forum. Abbiamo scoperto un crossposting su MasterDrive. Per me si può anche proseguire su questo canale (salvo decisione suprema dei moderatori), ma stai attento le prossime volte.
  • Re: Sequenza Numerica

    Si mi sono accorto dell'errore che ho fatto sui due siti...Mi scuso.
    Hai presente i libretti delle ricevute delle feste popolari? sono da cento fogli. Io ho una tabella con migliaia di questi record. I libretti hanno 7 cifre (dal 9089000 al 9089999) la serie successiva non parte dal 9090000 ma varia (es. 7871000 - 7871999).
    Io ho pensato di lavorare sulle ultime due cifre (00, 01, 02, 03, 04, 05, 06, 07...) o solo sull'ultima (1,2,3,4,5,6,...) Arrivato al 99 il record successivo avrà il valore 00 (a prescindere dalle restanti cifre). In tutte queste sequenze devo intercettare i numeri mancanti

    Quindi un ciclo da 00 a 99 che poi ricomincia.... almeno penso....
  • Re: Sequenza Numerica

    Ma a te serve una soluzione "standard"...nel senso che prevedi di ripeterla anche in futuro? Oppure hai scoperto qualche "baco" questa volta e vuoi scoprire dove sta...poi una volta trovati non ti serve più?
    Sicuramente ci sarà una soluzione più elegante, ma io ne propongo una poverella a piccoli passi:
    1. Con una query dovresti separare le ultime 3 cifre usando
    Right([Nome campo]; 3)
    2. Poi, per renderlo "numerico", occorre trasformarlo con Val, quindi
    K: Val(Right([Nome campo]; 3))
    (dove K sarà il nome attribuito al nuovo campo nella query)
    3. Salva la query con nome X
    4. Crea una tabella Numeri che abbia 1000 record. Se ci metti 2 soli campi IDNumero (tipo numerazione automatica) e l'altro campo lo chiami come vuoi e ci metti qualsiasi valore. A te interessa avere 1000 record con numerazione integra
    5. In visualizzazione struttura tabella Numeri, modifica il tipo campo "numerazione automatica" in "numerico". Poi sostituisci il valore 1000 con 0
    6. Crea una "query ricerca dati non corrispondenti" tra [Numeri].[IDNumero] e [X].[K] che ti dovrebbe fornire tutti i biglietti mancanti, almeno "una serie alla volta".
  • Re: Sequenza Numerica

    Segnalo:
    **
  • Re: Sequenza Numerica

    Ho già chiesto scusa per il crosspost...

    @OsvaldoLaviosa - Il suggerimento è buono ma vorrei rendere automatico il controllo di tutte le serie in quanto già tutte inserite in DB.
  • Re: Sequenza Numerica

    A mio avviso il 3D va chiuso, come da regolamento.
  • Re: Sequenza Numerica

    Ho risolto. Grazie.

    @Alex Puoi applicare il regolamento.
  • Re: Sequenza Numerica

    Non sono in grado di fornire un codice VBA completo (soluzione elegante), ma gli indizi che ritengo utili da prendere in considerazione possono essere:

    - Val(Right([Nome campo]; 3)) in ogni caso
    - Una variabile I di tipo Integer con un ciclo For I=0 To 999
    - Un Recordset da aprire usando il metodo DAO e controllare con I volta per volta. Quando non c'è corrispondenza avvisare con un MsgBox o impostare un valore in un campo

    Onestamente mi sfugge come gestire il ritorno del ciclo I da 0 per analizzare una nuova "serie"...ma non dovrebbe essere poi così difficile, una volta assodati i punti che ho indicato prima.
  • Re: Sequenza Numerica

    viki1968 ha scritto:


    Ho risolto. Grazie.

    @Alex Puoi applicare il regolamento.
    Potrebbe sembrare una battuta da furbetto...
  • Re: Sequenza Numerica

    X viki1968: chiudo il thread per cross posting.
    Ti consiglio di leggere il regolamento prima di postare nuovamente...
Devi accedere o registrarti per scrivere nel forum
13 risposte