title image


Smiley Ein klassisches Proble
Hallo zusammen,



die ist ein X-Posting zu der gleichen Frage aus dem SQL-Forum. Die Lösung, die ich bisher gefunden habe, läuft über SQL. Deshalb hab ich's in das SQL-Forum gepostet. Dort riet man mir, nochmal in's Access-Forum zu posten.



Ich hab mal ein klassisches Problem, welches sicher schon tausend mal gelöst wurde. Aber ich finde die Lösung nirgens.



Gegeben ist eine Access Datenbank, die nicht von mir entwickelt wurde und auch nicht Dokumentiert ist. In der Datenbank gibt es eine große Menge an Abfragen. Diese Abfragen beziehen ihre Daten aus Abfragen, welche wiederum ihre Daten aus Abfragen beziehen usw. Die genaue Tiefe ist unbekannt.



Ich soll nun an der Tabellenstruktur eine Änderung vornehmen. Um größeren Schaden vermeiden zu können, hätte ich gerne vorher gewusst, welche der vielen Abfragen (direkt oder indirekt) von dieser Änderung betroffen sind.



Mir ist bisher nur eine Lösung eingefallen, die ich aber nicht für all zu praktisch halte. Deswegen wollte ich hier mein Lösung zur Diskussion stellen, ob Ihre eine bessere Lösung habt.



Vorab: Ich kann durch unsere Firewall keine Tools herunter laden. Also kann ich nur die Bordmittel von Access 2002 (XP) ODE einsetzen.



Meine Lösung basiert auf drei Abfragen.



Abfrage1:

SELECT DISTINCT MSysObjects.Name, MSysQueries.Name1

FROM MSysObjects AS MSysObjects INNER JOIN MSysQueries

ON MSysObjects.Id = MSysQueries.ObjectId

WHERE (((MSysObjects.Name) Not Like "~*") AND ((MSysQueries.Attribute)=5));



Abfrage2: genau diese gfällt mir nicht

SELECT Abfrage1.Name, Abfrage1.Name1 FROM Abfrage1

UNION

SELECT Abfrage1.Name, Abfrage1_1.Name1

FROM Abfrage1 AS Abfrage1_1 INNER JOIN Abfrage1 ON Abfrage1_1.Name = Abfrage1.Name1

UNION

SELECT Abfrage1.Name, Abfrage1_2.Name1

FROM (Abfrage1 AS Abfrage1_1 INNER JOIN Abfrage1 ON Abfrage1_1.Name = Abfrage1.Name1) INNER JOIN Abfrage1 AS Abfrage1_2 ON Abfrage1_1.Name1 = Abfrage1_2.Name

UNION

SELECT Abfrage1.Name, Abfrage1_3.Name1

FROM ((Abfrage1 AS Abfrage1_1 INNER JOIN Abfrage1 ON Abfrage1_1.Name = Abfrage1.Name1) INNER JOIN Abfrage1 AS Abfrage1_2 ON Abfrage1_1.Name1 = Abfrage1_2.Name) INNER JOIN Abfrage1 AS Abfrage1_3 ON Abfrage1_2.Name1 = Abfrage1_3.Name;



Abfrage3:

SELECT Abfrage2.Name, Abfrage2.Name1

FROM MSysObjects INNER JOIN Abfrage2 ON MSysObjects.Name = Abfrage2.Name1

WHERE (((MSysObjects.Type)=6));



Bei dieser Lösung ist die Abfrage2 unübersichtlich groß, bzw. die Tiefe muss bekannt sein, sonst endet es in sinnlosen frickeleien.



Habt Ihr eine Idee? Ich wäre euch sehr dankbar.

Gruß

Jojo6





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: