Duplicati non ammessi al salvataggio del record

di il
6 risposte

Duplicati non ammessi al salvataggio del record

Buonasera, in una maschera frmDati con i controllo ID , Numero, Data. Avrei la necessità, prima di salvare il record, di verificare che Numero e Data non siano uguali. Grazie

6 Risposte

  • Re: Duplicati non ammessi al salvataggio del record

    Tu vorresti che la verifica fosse fatta PRIMA di salvare. Detto così, almeno io, non saprei. La soluzione più semplice che ti consiglio sarebbe quella di impostare un Indice Multicampo Univoco sulla coppia di campi Numero e Data. Cosa succede:
    Se la coppia Numero/Data non esiste già, Access salva tranquillamente.
    Se la coppia Numero/Data esiste gia, all'invio per passare al record successivo, Access si ferma e invia un messaggio di errore dove dice, in sostanza, che si sta violando un Indice Univoco.
    Non so se questa soluzione è per te congeniale, ma per lo meno garantisce il controllo della situazione.
  • Re: Duplicati non ammessi al salvataggio del record

    Forse ho posto male la domanda, ed oltretutto incompleta.
    Volevo completare la maschera per gradi cercando di capire le soluzioni proposte.
    Nella maschera vi sono altri controlli, la coppia Numero/Data è quella da verificare, prima che si continui con gli altri controlli. Sarebbe ottimale che nel caso vi sia una duplicazioni di dati, si aprisse una sottomaschera che visualizza il record duplicato. Scusatemi ma non volevo chiedere troppo e tutto assieme
  • Re: Duplicati non ammessi al salvataggio del record

    Prova la seguente soluzione:
    1. Crea una nuova query in visualizzazione struttura
    2. Importa la tabella Dati
    3. Trascina nella griglia i campi ID, Numero, Data (obbligatori), altri eventuali campi facoltativi
    4. In Criteri, devi scrivere le seguenti espressioni nei rispettivi campi:
    ID: <>[Maschere]![frmDati]![ID]
    Numero: [Maschere]![frmDati]![Numero]
    Data: [Maschere]![frmDati]![Data]
    5. Salva la query con nome VerificaDuplicato
    6. Crea una macro in visualizzazione struttura e apri la colonna Condizioni
    7. Nel rigo1 Condizioni, scrivi la seguente espressione:
    DCount("*";"VerificaDuplicato";"")>0
    8. Nel corrispondente rigo1 Azione, scrivi:
    ApriQuery
    Nome query: VerificaDuplicato
    9. Salva la macro con nome X
    10. Apri la frmDati in visualizzazione struttura. Qui hai detto che tu avresti altri campi da compilare, dopo aver compilato Numero e Data. Si potrebbero sfruttare diversi eventi affinchè la query VerificaDuplicato venga messa in moto. Io avrei pensato all'evento "Dopo aggiornamento" sul campo Data perchè immagino che tu hai già compilato il campo Numero prima e poi Data. Quindi, al campo Data, all'evento "Dopo aggiornamento", devi associare la macro X
    11. Salva la struttura di frmDati

    Or bene, se non ci sono duplicati, la query non avrà record e non viene neppure eseguita perchè la condizione macro valuta solo se la query ha più di 0 record. Io ho scelto di far aprire la query, puoi scegliere di aggiungere una FinestraMessaggio che ti avvisa la presenza di un duplicato. Si tratta di una scelta di stile, ma la sostanza non cambia. Ho fatto un test e funziona.
  • Re: Duplicati non ammessi al salvataggio del record

    Grazie OsvaldoLaviosa, è quello che chiedevo per intercettare il doppione.
    Ma se invece della query dovesse aprire una subform?
    Ho provato a cambiare le azioni della macro, e la subform l'ho inserita nella maschera principale solo che viene visualizzata sempre, invece si dovrebbe visualizzare solo quando intercetta il record duplicato.
  • Re: Duplicati non ammessi al salvataggio del record

    Invece di creare una classica sottomaschera Foglio dati (che effettivamente vedresti sempre), crea una sottomaschera collegata. Quindi, se la condizione impostata si verifica, ApriMaschera: NomeSottomaschera.
  • Re: Duplicati non ammessi al salvataggio del record

    Grazie è OK
Devi accedere o registrarti per scrivere nel forum
6 risposte