+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Campo numerico autoincrementante che riparte da 0 al variare dell'ID

  1. #1
    Spaginato non è in linea Scolaretto
    Post
    94

    Campo numerico autoincrementante che riparte da 0 al variare dell'ID

    Buonasera a tutti, mi sono appena registrato
    Avrei bisogno di aiuto...... son giorni che sto ad impazzire.
    Premesso che sono alle prime armi Vi spiego!
    Sono alle prese con un database e vorrei che un campo numerico di una maschera seguisse una numerazione automatica dei record
    Sono riuscito dopo vari "impazzimenti" sono riuscito a scrivere questo codice inserito nell'evento maschera "prima di inserire:

    codice:
    Private Sub Form_BeforeInsert(Cancel As Integer)
    Me!PartNum = Nz(DMax("[PartNum]", "[Partite]"),0) + 1
    End Sub

    Sembra funzionare bene!
    L'inconveniente sorge al cambiare dell'ID in quanto continua la numerazione in progressivo.
    Vorrei che al nuovo ID la numerazione ripartisse da 1
    Spero essere stato chiaro nella spiegazione.
    Grazie
    Ultima modifica di AntonioG; 08-04-2017 09:53  Motivo: Occhio ai tag CODE

  2. #2
    L'avatar di nman
    nman non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,485
    Quote Originariamente inviato da Spaginato Visualizza il messaggio
    codice:
    Private Sub Form_BeforeInsert(Cancel As Integer)
    ........ =  Nz(   DMax("[PartNum]", "[Partite]")   ,0) + 1
    Vorrei che al nuovo ID la numerazione ripartisse da 1
    Perche BeforeInsert ?????

    Logicamente il tuo ID deve fare riferimento a una KeySecondaria che ammette duplicati
    altrimenti la domanda non avrebbe motivo di esistere

    In quel DMax cosi come lo calcoli te non vedo nessun riferimento al tuo ID
    pertanto (logicamente) la numerazione procede indisturbata
    Devi aggiungergli il 3° parametro con il riferimento all' ID

    .

  3. #3
    Spaginato non è in linea Scolaretto
    Post
    94
    Quote Originariamente inviato da nman Visualizza il messaggio
    Perche BeforeInsert ?????

    Logicamente il tuo ID deve fare riferimento a una KeySecondaria che ammette duplicati
    altrimenti la domanda non avrebbe motivo di esistere

    In quel DMax cosi come lo calcoli te non vedo nessun riferimento al tuo ID
    pertanto (logicamente) la numerazione procede indisturbata
    Devi aggiungergli il 3° parametro con il riferimento all' ID

    .
    Ciao Nman e grazie per avermi risposto......
    La questione è che non so proprio come e scrivere ed i servire nel codice Il 3 parametro.
    SIGH...........
    Poi non ho capito la domanda sul "BeforeInsert"

  4. #4
    Spaginato non è in linea Scolaretto
    Post
    94

    Scuse

    Quote Originariamente inviato da Spaginato Visualizza il messaggio
    Ciao Nman e grazie per avermi risposto......
    La questione è che non so proprio come e scrivere ed i servire nel codice Il 3 parametro.
    SIGH...........
    Poi non ho capito la domanda sul "BeforeInsert"
    Ritenendomi una persona corretta e leale ed avendo conosciuto da poco il significato del termine "crossposting"
    ho il dovere di chiedere scusa a tutta la Community in quanto ho postato lo stesso quesito su un altro Forum.
    Spero possiate accettare le mie scuse per questo inconsapevole "madornale" errore
    grazie

  5. #5
    Spaginato non è in linea Scolaretto
    Post
    94
    Quote Originariamente inviato da nman Visualizza il messaggio
    Perche BeforeInsert ?????

    Logicamente il tuo ID deve fare riferimento a una KeySecondaria che ammette duplicati
    altrimenti la domanda non avrebbe motivo di esistere

    In quel DMax cosi come lo calcoli te non vedo nessun riferimento al tuo ID
    pertanto (logicamente) la numerazione procede indisturbata
    Devi aggiungergli il 3° parametro con il riferimento all' ID

    .
    Comunque rileggendo la tua risposta la chiave a cui dovrebbe fare riferimento è IDSquadra vindi vorrei che al cambiare d questo la numerazione partisse da 1 e proseguisse incrementandosi ogni volta che si inserisce una partita
    Grazie e scusa anche a Te

  6. #6
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    14,726
    Blogs
    5
    Moderazione Per questa volta passi, in futuro farai più attenzione sicuramente.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  7. #7
    Spaginato non è in linea Scolaretto
    Post
    94

    Grazie

    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Moderazione Per questa volta passi, in futuro farai più attenzione sicuramente.
    Grazie e scusatemi ancora

  8. #8
    Spaginato non è in linea Scolaretto
    Post
    94
    Quote Originariamente inviato da Spaginato Visualizza il messaggio
    Grazie e scusatemi ancora
    errare humanvm est, perseverare è da fessi

  9. #9
    Spaginato non è in linea Scolaretto
    Post
    94
    Quote Originariamente inviato da nman Visualizza il messaggio
    Perche BeforeInsert ?????

    Logicamente il tuo ID deve fare riferimento a una KeySecondaria che ammette duplicati
    altrimenti la domanda non avrebbe motivo di esistere

    In quel DMax cosi come lo calcoli te non vedo nessun riferimento al tuo ID
    pertanto (logicamente) la numerazione procede indisturbata
    Devi aggiungergli il 3° parametro con il riferimento all' ID

    .
    Nman scusami lo so che sei inc....avolato con me
    mi potresti spiegare come faccio a richiamare l'IdSquadre nella tabella PARTITE con Dmax?
    come aggiungere il 3 parametro?
    Non voglio il codice vorrei capire soltanto come si fa
    Grazie

  10. #10
    L'avatar di nman
    nman non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,485
    Quote Originariamente inviato da Spaginato Visualizza il messaggio
    ....... come faccio a richiamare l'IdSquadre nella tabella PARTITE con Dmax?
    come aggiungere il 3 parametro? .........
    il IDSquadre non lo devi richiamare, ma lo devi digitare
    poi la funzione DMax( ".......", ".........", ".........") ti calcola il progressivo

    Concentriamoci solo su quanto ti avevo evidenziato in rosso nel #2
    quella è una funzione di Dominio
    [Access] Funzioni di dominio

    a te occorre trovare il massimo di PartNum nella tabella Partite dove il campo IDSquadre corrisponda per esempio a 5

    se lo scrivi in SQL viene cosi:
    SELECT Max(PartNum) FROM Partite WHERE IDSquadre = 5;

    lo traduci in funzione di dominio con 3 parametri viene cosi
    DMax("[PartNum]", "[Partite]", "IDSquadre = 5")

    ma il tuo 5 non è un valore fisso ma bensi un controllo della maschera
    quindi osserva bene gli apici
    DMax("[PartNum]", "[Partite]", "IDSquadre = " & Me!IDSquadra)
    quella sopra è una funzione di Dominio con 3 parametri
    tu invece avevi omesso il 3° parametro (quello rosso) quindi ti contava
    tutto senza preoccuparsi dell' IDSquadra



    Per quanto riguarda invece il BrforeInsert, provaci e ti accorgerai
    che con la modifica suggerita ti genera un errore ( n° 3075 )
    perche tenta di calcolare il tuo DMax quando non hai ancora
    potuto digitare il IDSquadra

    Pertanto devi sostituirlo con un altro evento che sia successivo alla digitazione di IDSquadra

    Facci sapere

    .

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi