DS anfügen, wenn Kombination zweier Werte noch nicht vorhanden
Karl Donaubauer
Gesendet: 24.01.13 18:09
Betreff: RE: DS anfügen, wenn Kombination zweier Werte noch nicht vorhanden



Elite Veteran

Beiträge: 742
50010010025
Ort: Wien
Hallo, Micmen!

micmen - 24.01.13
ich möchte gerne eine Anfügeabfrage bauen, die in eine Tabelle B Datensätze anfügt. Die Werte für die Felder kommen zum Teil aus einer Tabelle A und zum Teil von aktuell berechneten oder eingegebenen Werten. Beim Anfügen soll aber beachtet werden, daß nicht Datensätze generiert werden, wenn die identische Kombination an Werten in zwei der Felder bereits in einem Datensatz vorkommt.
Ich könnte jetzt an der Struktur von Tabelle B etwas ändern und einen Index für die beiden Felder anlegen, der nur eindeutige Werte zuläßt. Aber dann würde die Abfrage regelmäßig versuchen, verbotene Datensätze zu speichern, immer mit einem Fehler, und ich würde es nicht merken, wenn einmal ein ähnlicher Fehler durch ein "echtes Problem" hervorgerufen wird und nicht durch diese etwas unsaubere Vorgehensweise. Ich müßte diesen Fehler ja unterdrücken und würde nie mehr erkennen, wenn anderweitig (wie z.B. beim Primärschlüssel) gegen Eindeutigkeitsregeln verstoßen wird.

Ich schätze aber mal, da gibt es keine Lösung, oder?

Ich weiß nicht, ob ich deinen Einwand gegen die für mich durchaus sauber klingende Lösung mit einem Mehrfeldindex so ganz verstehe, aber es gibt an sich schon einen anderen Weg:

Wenn die neuen Werte bzw. die zu prüfenden Felder nur aus einer anderen Tabelle kommen, löst man das über mehrere OUTER JOINs + 1 NULL-Kriterium nach dem Prinzip von:

Datensätze aus A, die nicht in B sind
http://www.donkarl.com?FAQ3.16

Wenn du mit "aktuell berechneten oder eingegebenen Werten" sowas wie Formularbezüge oder sonstige Parameter in einer Abfrage meinst, dann könntest du die als Auswahlabfrage speichern und danach in der Anfügeabfrage die o.a. Prüfung von der gespeicherten Abfrage gegen die Zieltabelle veranstalten.

-----
Servus
Karl
*********
Internationale Access-Konferenz: http://AccessDevCon.com
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek
Top of the page Bottom of the page