[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Überflüssige (mehrfache) Beziehungen anzeigen

Sprache / Programm: SQL (Access)
Beschreibung

Bei der Entwicklung einer neuen Datenbank kommt es gelegentlich dazu, dass man den Nachschlageassistenten mehrfach für die Verbindung der gleichen Felder einsetzt. Access zieht dabei jedes Mal eine einfach Beziehung, selbst wenn eine vorhandene Beziehung stärker ist (z.B. mit referentieller Integrität).

Solche überflüssigen Beziehungen kann man mit dieser Abfrage erkennen um sie anschließend im Beziehungsfenster zu löschen.

VBA-Quelltext
SELECT IIf([szObject]<=[szReferencedObject],
"[" & [szObject] & "].[" & [szColumn] & "]  =  [" & [szReferencedObject]  & "].[" & [szReferencedColumn] & "]",
"[" & [szReferencedObject]  & "].[" & [szReferencedColumn]  & "]  =  [" & [szObject] & "].[" & [szColumn] & "]") AS Beziehung, COUNT(*) AS Anzahl
FROM MSysRelationships
GROUP BY IIf([szObject]<=[szReferencedObject],
"[" & [szObject] & "].[" & [szColumn] & "]  =  [" & [szReferencedObject]  & "].[" & [szReferencedColumn] & "]",
"[" & [szReferencedObject]  & "].[" & [szReferencedColumn]  & "]  =  [" & [szObject] & "].[" & [szColumn] & "]")
HAVING COUNT(*)>1;
Rückgabewert

Die Abfrage gibt zwei Spalten zurück, eine mit der Beschreibung der verknüpften Spalten und eine Spalte für die Anzahl der Verknüpfungen. Es werden nur Verknüpfungen angezeigt, deren Anzahl größer als 1 ist.

Hinweis

Um diese Funktion als Abfrage in Access zu erstellen, geht man so vor:

  • Eine beliebige Abfrage in Access erstellen

  • In die SQL Ansicht umschalten

  • eventuell vorhandenen Text löschen (wenn es eine funktionsfähige Abfrage war, wird diese dadurch entfernt)

  • den hier unter Programmcode stehenden Text hineinkopieren