Evitare duplicati

di il
6 risposte

Evitare duplicati

Ciao a tutti,
riprendo una discussione circa un db relativo a turni di lavoro.
Questo è lo scenario: tabella con campi ID(Contatore) turno (Testo) Data (data) ora (ora) compito (testo) addetto (testo multiplo).
Nel campo addetto (nella maschera) ho messo una casella combinata che da possibilità di scegliere valori multipli.
Ora vorrei fare in modo che al momento che all'inserimento di un secondo compito per un addetto il sistema avvertisse (magari con un popup) chi inserisce con un messaggio del tipo "L'addetto per il giorno indicato ha già un compito, vuoi aggiungere ?".
E' vero che nel meccanismo gli addetti ogni giorno può capitare che facciano più compiti però così facendo creerei una sorta di controllo per far capire a chi inserisce che c'è già un compito da svolgere. Credete sia possibile farlo ?
Grazie a tutti

6 Risposte

  • Re: Evitare duplicati

    Io ti consiglio di impostare un "Indice Multicampo Univoco" (leggi la guida in linea per capire di cosa si tratta). In questo modo, se scrivi dati duplicati, Access invia un messaggio di errore "proprio" in cui segnala che "...hai violato...(non mi ricordo più bene il testo completo)...".
    Ovviamente si può gestire anticipatamente in VBA e mostrare un messaggio personalizzato. Questo non lo so fare: attendi una risposta più esperta.
  • Re: Evitare duplicati

    OsvaldoLaviosa ha scritto:


    Io ti consiglio di impostare un "Indice Multicampo Univoco"
    Un indice univoco bloccherebbe l'inserimento.
    Invece mazda vuole solo un warning.
  • Re: Evitare duplicati

    mazda91 ha scritto:


    Ora vorrei fare in modo che al momento che all'inserimento di un secondo compito per un addetto il sistema avvertisse (magari con un popup) chi inserisce con un messaggio del tipo "L'addetto per il giorno indicato ha già un compito, vuoi aggiungere ?".
    Credete sia possibile farlo ?
    Certamente, al lato pratico dipende da come hai impostato la creazione del nuovo compito.
    In sostanza si tratta di fare una query impostando un filtra sul giorno ed addetto selezionati, se la query restituisce almeno un record, allora esiste già un compito.
  • Re: Evitare duplicati

    Ciao e grazie a tutti,
    la strada della query mi sembra che sia nelle mie possibilità; dovrei però far si che si avviasse all'aggiornamento del campo Addetto, e fornisse non un risultato (la query) bensì un msgbox.
  • Re: Evitare duplicati

    gibra ha scritto:


    In sostanza si tratta di fare una query impostando un filtra sul giorno ed addetto selezionati, se la query restituisce almeno un record, allora esiste già un compito.

    mazda91 ha scritto:


    la strada della query mi sembra che sia nelle mie possibilità; dovrei però far si che si avviasse all'aggiornamento del campo Addetto, e fornisse non un risultato (la query) bensì un msgbox.
    La query non ti serve per essere aperta, ma per contarne solo i suoi record. Io penserei una cosa del genere
    Private Sub Addetto_AfterUpdate()
    If DCount("*","Nome query") > 0 Then MsgBox "Questo Addetto ha già un compito"
    End Sub
    Se proprio non vuoi mettere una query in gioco apposta apposta, potresti fare una altra espressione con la DCount, ossia:
    DCount("*","Nome tabella",---criterio da esplicitare con una espressione opportuna oppure una variabile equivalente---)
  • Re: Evitare duplicati

    Rieccomi,
    mi scuso per il ritardo nella risposta, grazie Osvaldo il tuo aiuto è stato risolutivo.
Devi accedere o registrarti per scrivere nel forum
6 risposte