Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Gespeicherte Imports und Fehlermeldung bei Schlüsselverletzung

Begonnen von Xoar, Januar 21, 2021, 10:59:31

⏪ vorheriges - nächstes ⏩

Xoar

Hallo alle zusammen,

wie fange ich denn einen "Schlüsselverletzungsfehler" beim importieren ab, wenn ich kein aktives Formular habe?

Ich habe ein eigen erstelltes Ribbon, wo ich alle Formulare... schließe, bevor ich den Import starte.
Über einen Ribbonbutton_click wird eine Prozedur aufgerufen, wo per VBA der Import (DoCmd.RunSavedImportExport ("ImportDatei1"))ausgeführt wird.

Da es beim Import zu Schlüsselverletzungen kommt (welche hier bewusst ignoriert werden sollen) käme es ja ohne den Befehl DoCmd.SetWarnings False zu diesem PopUp, wo drin steht, dass X Datensätze aufgrund von Schlüsselverletzungen nicht importiert werden können, Drücken Sie auf JA um weiter zu machen....
am Ende aktiviere ich die SetWarnings wieder.

In meiner normalen Fehlerbehandlung wird diese Art Fehler nicht behandelt.
On error goto e:

Code

e:
MsgBox "Es gab einen Fehler! " & _
vbCrLf & vbCrLf & _
"Fehlercode: " & Err.Number & vbCrLf & _
"Fehlerbeschreibung: " & Err.description & vbCrLf & _
End sub

Wie gesagt, ich habe kein Formular mehr auf, wo ich den Fehler abfangen könnte, muss das irgendwie mit dem Ribbon gemacht werden?


Danke für eure Hilfe :)

ebs17

Zitatwird eine Prozedur aufgerufen, wo per VBA ...
Wozu brauchst Du für eine Meldung (MsgBox) extra ein Formular?

ZitatDa es beim Import zu Schlüsselverletzungen kommt (welche hier bewusst ignoriert werden sollen)
Recht diskutabel.
Mit freundlichem Glück Auf!

Eberhard

Xoar

1.
Mein Ziel an sich ist es, dass ich andere mögliche Importfehler erfassen kann.
Für ne msgbox brauch ich kein Formular, aber dieser Schlüsselfehler wird nicht, in meiner oben gezeigten Fehlerbehandlung, als Fehler erkannt.

Ich habe mal gelesen, dass diese Schlüsselfehler ein Formfehler sind und dann beim Formularereignis Bei Error abgefangen werden können, daher meine Anfrage. Es ist ja kein Form offen wo dieser Fehler zugeordnet werden könnte.


2.
Die Variante den Import mit Schlüsselverletzungen durchzuführen, ist nicht die sauberste, aber mit wenig Aufwand verbundene Lösung.

Ich müsste sonst den Import in eine Zwischentabelle packen, oder verknüpfen, dann ermitteln welche Felder aktualisiert, ergänzt oder ausgelassen werden müssen.

Diesen Aufwand wollte ich mir sparen, auch wenn es dadurch nicht 100%ig ist.

:/

ebs17

ZitatIch habe mal gelesen, dass diese Schlüsselfehler ein Formfehler sind
Dann solltest Du Deine Literatur überprüfen. Schlüssel in einer DB werden über Indizes, also in der Tabellendefinition, fixiert. Zusätzlich dann per eingestellter referentieller Integrität, also in Beziehungen. Ein Formular ist da meilenweit entfernt.

ZitatMein Ziel an sich ist es, dass ich andere mögliche Importfehler erfassen kann.
Mein Ziel ist es regelmäßig, fehlerfrei zu importieren. Fehler will ich gar nicht sehen oder gar dokumentieren, erwartbare Fehler schon mal gar nicht.
Übrigens: Ein Teilimport ist auch ein Fehler. Entweder ganz oder gar nicht. Zwischenzustände wird man sehr schnell nicht beherrschen, analysieren und korrigieren können.

Zitatmit wenig Aufwand verbundene Lösung
Die Zeit, sich den Fehlerkram anzusehen, zählst Du nicht?
Die meisten Programmierer werden sich wohl sagen, dass man sich einmal etwas mehr Mühe gibt und dann im Laufenden seine Ruhe hat. Aber jeder macht es richtig, sonst würde er es anders machen.

ZitatDiesen Aufwand wollte ich mir sparen
Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle
Im Ernst: Wer eine Abfrage scheut, sollte vielleicht gleich ganz die Finger von einer Datenbank lassen.
Mit freundlichem Glück Auf!

Eberhard

Xoar

Hi,

ich muss  dir Recht geben, am Ende des Wegs sollte man die optimalste Möglichkeit nutzen.
Ich werde mal mal versuchen die Tipps aus deinem Link umzusetzen.

Danke für den Denkanstoß und Motivation ;)