Impedire inserimento con maschera di valori duplicati

Anonimo
2010-11-23T23:13:25+00:00

Ciao a tutti! spero possiate aiutarmi.

Ho una tabella con due campi chiave, perchè la combinazione dei due deve essere univoca, quindi in tabella sono indicizzati duplicati non ammessi. Ho creato una maschera basata sulla suddetta tabella e vorrei che l'inserimento di duplicati sulla combinazione dei due campi non fosse possibile e che mi desse un messaggio di avviso! I campi in questione sono uno di tipo testo e l'altro numerico

Grazie

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2010-11-25T07:09:42+00:00

Ciao Nuvola,

il controllo che fai in una maschera di inserimento dati scatterebbe anche clikkando Record successivo nella maschera senza necessariamente chiuderla.

Permarrebbe però il tuo problema perchè Access controlla gli indici solo dopo che vai al record successivo, quindi dopo che hai inserito tutti gli altri dati per l'appunto (http://support.microsoft.com/kb/102527#top).

Devi chiedere ad access di fare il controllo subito dopo che hai inserito i due campi dell’indice

Se non ho capito male la macro che ti propongono nel link (esempio con Chiave primaria a un campo solo), nel tuo caso dovrebbe essere:

CONDIZIONE:

DCount("[Num]&[Testo]";"Tabella1";"[Num]&[Testo]=Forms!Maschera1!Num&Forms!Maschera1!Testo")<>0

DOVE:

Num = il campo numerico

Testo = il campo testo

La chiave primaria nella tua tabella è fatta dai due

Tabella1 = tabella dove registri i tuoi record

Maschera 1= maschera di inserimento dei dati

2 AZIONE:

Finestra messaggio, Messaggio: Valore già esistente

La macro dovresti metterla sull'evento:

Prima di aggiornare

della Casella Testo (la seconda che alimenti in fase di inserimento, se inserisci prima il campo testo e poi il numero la macro andrebbe messa sull’evento Prima di aggiornamento del Numero).

Se non ho capito male anche la soluzione proposta da Karl (Variante 2) lavora con una logica simile.

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2010-11-24T20:47:57+00:00

nuvola23 wrote:

> Ho una tabella con due campi chiave, perchè la combinazione dei due

> deve essere univoca, quindi in tabella sono indicizzati duplicati non

> ammessi. Ho creato una maschera basata sulla suddetta tabella e

> vorrei che l'inserimento di duplicati sulla combinazione dei due

> campi non fosse possibile e che mi desse un messaggio di avviso! I

> campi in questione sono uno di tipo testo e l'altro numerico

Qui nella variante 2 trovi un esempio per un solo campo

http://www.donkarl.com/it?FAQ4.25

La prova del secondo campo puoi aggiungere con un AND.

Se non riesci, incolla cosa hai provato e come si chiamano

i tuoi campi e controlli.

--

cu

Karl

*********

Access FAQ: http://www.donkarl.com/it

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-11-24T15:22:38+00:00

    Ok, il messaggio viene visualizzato ma solo quando chiudo la maschera con il pulsante di chiusura maschera.

    ho creato un pulsante di comando nella maschera che la chiude, e utilizzando quello non appare nessun avviso di record duplicati, cosa che invece succede utilizzando il pulsante di chiusura maschera. L'inserimento dei due campi che rendono il record univoco si trova all'inizio dei tanti dati che devo poi inserire, quindi se ho inserito dei dati duplicati la procedura mi avvisa solamente quando ho terminato di riempire la scheda, io invece vorrei che quando inserisco il secondo campo dei due mi avvisasse che non è corretto ... non so se mi sono spiegata chiaramente ..... Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-11-24T06:45:21+00:00

    Ciao potresti fare così:

    vai in struttura tabella,

    selezioni la riga del campo numero e quella del campo testo,

    Cliccki chiave primaria.

    Hai creato così una chiave fatta dalla combinazione dei due campi, inserendo due volte gli stessi dati ti darà errore. Per esempio se in una riga avevi messo 1 e "A" e provi a ripeterlo in una riga successiva ti dice che è possibile perchè si è cercato di diuplicare i valori dell'indice.

    A livello di maschera poichè questo messaggio  potrebbe apparire un po' criptico per l'utente sull' evento "Su errore" della maschera potresti mettere questo codice:

    Private Sub Form_Error(DataErr As Integer, Response As Integer)

        Const conErrRequiredData = 3022

        If DataErr = conErrRequiredData Then

            MsgBox ("Record già esistente")

            Response = acDataErrContinue

        Else

            'Display a standard error message

            Response = acDataErrDisplay

        End If

    End Sub

    Il messaggio che dovrebbe apparire in caso di doppio inserimento è"Record già esistente" che ovviamente puoi riscrivere come meglio credi.

    La risposta è stata utile?

    0 commenti Nessun commento