„Kein aktueller Datensatz“ nach Abbrechen in combo_BeforeUpdate
-
29-09-2019 - |
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?
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 ...