Frage

Ich versuche, kreisförmig (oder sogar Kaskadierung) Referenzen in meinen Daten zu verhindern, und es scheint, es ist nur ein Teil der Zeit arbeiten.

In Access 2007, ich habe die folgende Tabelle:

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

Ich bin ein Bündel von Daten aus Excel importieren, und die mfr_nm ist einer der Spalten aus dem Arbeitsblatt. Ich kann nicht steuern, wie Daten wird in Excel eingegeben, so dass ich alternative Schreibweisen des Erfassens als „wirklich“ Gleiche ist eine Art und Weise will. So weit, so gut (ich glaube, ...).

Jetzt habe ich ein Formular aus dieser Tabelle aufgebaut. Ich habe eine ComboBox für den Alias ??bekam - wieder so weit, so gut. Allerdings, wenn ich diesen Code zum VorAktualisierung Ereignis hinzufügen, werden die Dinge „interessant“ (Fehler ausgelassen Abwicklung):

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

Das funktioniert genau so, wie ich erwarte, dass es, wenn das Formular in der Formularansicht, aber wenn ich in der Datenblattansicht meines MsgBox bin sofort von einem Access-generated „Kein aktuellen Datensatz“ Fehlern gefolgt, die nicht durch die Fehlerbehandlung im VorAktualisierung Unter gefangen.

Kann ich fange diese Fehler? Wo?

War es hilfreich?

Lösung

Ihre Drop-Down-Liste sollte Einträge herauszufiltern, die Aliase sind. Mit anderen Worten, zeigt keine Wahl kann der Benutzer nicht machen.

Sie würden dies tun, indem Sie einfach aus der Dropdown-Eliminierung der Auswahl, wo mfr_is_alias_for_id Is Not Null.

Ich habe dies umgesetzt in verschiedenen Gestalten und es funktioniert gut.

Andere Tipps

Ich bin Adressieren der „Kein aktueller Datensatz“ Fehler Teil Ihrer Frage, von so lange her. Nach der Überprüfung google nach einer Antwort, fand ich diese link , die hilfreich war. Doch statt NZ der Verwendung von (), um die lästige Binärfelds in einer Aggregatabfrage zu transformieren, benutzen ich troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield]) und dies gearbeitet, den Fehler zu bannen. Also meine Lösung ist nur eine kleine Variation der ursprünglichen Antwort fand ich, aber es wird den Fehler um und lassen Sie nulls halten, wenn Sie ...

wollen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top