Ignora Null

di il
6 risposte

Ignora Null

Ho una tabella con un "indice multicampo univoco". Quando crei tale indice, fra le varie opzioni, c'è anche Ignora Null. Ho provato a selezionarlo e a deselezionarlo, ma non ho riscontrato alcun effetto concreto. Per far sì che tutti i campi vuoti avessero efficacia all'interno dell'indice multicampo univoco, ho dovuto preimpostarli con valore predefinito "" (stringa di lunghezza zero).
Qualcuno saprebbe spiegarmi il significato dell'opzione Ignora Null?

6 Risposte

  • Re: Ignora Null

    Prova apensare alla definizione di campo Univoco(duplicati non ammessi) che può o meno essere PK.
    Come può conciliarsi la validazione di accettabilità di NULL su un campo UNIVOCO...??
    Non può.

    Ne consegue che qualsiasi campo UNIVOCO non accetta il NULL.

    La cosa è estensibile alle PK con Campi Multipli non viene discriminato il NULL MonoCampo in una logica Multicampo perchè la regola del NULL viene prima.
  • Re: Ignora Null

    @Alex ha scritto:


    Prova apensare alla definizione di campo Univoco(duplicati non ammessi) che può o meno essere PK.
    Come può conciliarsi la validazione di accettabilità di NULL su un campo UNIVOCO...??
    Non può.

    Ne consegue che qualsiasi campo UNIVOCO non accetta il NULL.
    OK.
    Quindi l'impostazione con i campi a valore predefinito "stringa lunghezza zero" è pertinente e l'unica strada "pratica" percorribile nel mio caso?

    Ma indipendentemente da tutto ciò, a cosa servono
    Ignora Null [v]
    Ignora Null [ ]?
  • Re: Ignora Null

    Io non ho un "Ignora Null"... ho "Consenti Lunghezza Zero" per i Campi ti tipo Testo, che per i campi Numerici(usati come FK) diventa RICHIESTO...!

    Nel momento in cui il campo da Normale(nel quale puoi definire questi 2 attributi) passa a PK che siano impostati a SI o a NO... il campo è OBBLIGATORIO in quanto PK, anche se Multipla.

    Non capisco cosa dici... alla fine.
  • Re: Ignora Null

    Il mio discorso parte esclusivamente da INDICE MULTICAMPO (non mi interessa l'indicizzazione su un campo solo, conosco bene la proprietà Indicizzato).
    Quando crei un INDICE MULTICAMPO puoi scegliere se sia Univoco: Sì.
    Io ho un Indice Multicampo Univoco su 10 campi (quasi tutti Testo). Tali 10 campi, non sempre li complilo tutti e desidero che Access mi invii un messaggio di errore quando 2 record combaciano su quei 10 campi. Se anche un solo campo è Null, Access non mi invia il messaggio di errore. Allora ho pensato bene di preimpostare tutti i campi testo a valore predefinito "stringa lunghezza zero", solo così Access mi invia il messaggio di errore.
    Era l'unico trucco praticabile?

    Quando crei un Indice Multicampo c'è l'opzione Ignora Null, ma mi pare di aver capito che non c'entra nulla con l'univocità, anzi è meglio tenerlo impostato
    Ignora Null: No
  • Re: Ignora Null

    Ripeto che parti da un concetto assurdo... tuttavia...

    Come e dove hai inserito la Gestione errori per intercettare questo messaggio...?

    Devi impostare l'evento OnError di Form, all'interno puoi verificare ed intercettare il codice di errore.

    Se vuoi prevenirlo, devi usare l'Evento BEFOREINSERT, testare i controlli e forzare quelli necessari quindi passare il CANCEL=FALSE per procedere nell'evento di INSERT.
  • Re: Ignora Null

    @Alex ha scritto:


    Come e dove hai inserito la Gestione errori per intercettare questo messaggio...?
    È semplicemente il messaggio errore di default di Access quando inserisci valori duplicati non consentiti:
    "L'apporto modifiche non è riuscito perchè si è cercato di duplicare i valori nell'indice, nella chiave primaria o nella relazione. Modificare i dati nel campo o nei campi che contengono dati duplicati, rimuovere l'indice o ridefinire l'indice per consentire l'inserimento di voci duplicate, quindi ritentare l'operazione."

    La mia domanda non voleva andare oltre più di tanto, ho risolto il mio problema con quel trucchetto. Per me va bene così.
    Ci sarebbe stato un altro modo altrettanto semplice?
Devi accedere o registrarti per scrivere nel forum
6 risposte