Domanda

Sto cercando di impedire circolare (o anche a cascata) i riferimenti nei miei dati, e sembra che è solo una parte del tempo di lavoro.

In Access 2007, ho la seguente tabella:

create table mfr (
    mfr_id                 Autonumber,
    mfr_nm                 Text(255),
    mfr_is_alias_for_id    Long Integer
)

Sono l'importazione di un gruppo di dati da Excel, e la mfr_nm è una delle colonne del foglio di lavoro. Non riesco a controllare la quantità di dati viene immesso in Excel, quindi voglio un modo di catturare grafie alternative come "realmente" stessa cosa. Fin qui, tutto bene (credo ...).

Ora ho costruito una forma fuori di questa tabella. Ho una casella combinata per l'alias - ancora una volta, finora, tutto bene. Tuttavia, quando aggiungo questo codice all'evento BeforeUpdate, le cose si fanno "interessante" (la gestione degli errori omesso):

If Not IsNull(cboMfrAlias) Then
    If Not IsNull(DLookup("mfr_is_alias_for_id", "mfr", "mfr_id=" & cboMfrAlias)) Then
        MsgBox """Alias for"" must not also be an alias.", vbExclamation
        Cancel = True
    End If
End If

Questo funziona esattamente come mi aspetto che quando il modulo è in forma vista, ma se sono in visualizzazione Foglio dati mia MsgBox è immediatamente seguito da un errore di accesso-generated "Nessun record corrente" che è non colto di gestione degli errori all'interno del sub PrimaDiAggiornare.

Posso prendere questo errore? Dove?

È stato utile?

Soluzione

Il tuo elenco a discesa dovrebbe filtrare le voci che sono gli alias. In altre parole, non visualizzare una scelta l'utente non può fare.

Si avrebbe fatto questo semplicemente eliminando dal menu a tendina in cui le scelte mfr_is_alias_for_id non è nullo.

Ho implementato questo in varie forme e funziona bene.

Altri suggerimenti

Sto affrontando la parte di errore "Nessun record corrente" della tua domanda, da tanto tempo fa. Dopo aver controllato google per una risposta, ho trovato questo link che era disponibile. Tuttavia, invece di utilizzare NZ () per trasformare il campo binario fastidioso in una query di aggregazione, ho usato troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield]) e questo ha funzionato per bandire l'errore. Così la mia soluzione è solo una piccola variazione sul risposta originale che ho trovato, ma si aggira l'errore e lasciare che si mantiene valori nulli se si desidera ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top