Extrahieren Sie Abfragedefinition von JET-Datenbank über ADO
-
30-09-2019 - |
Frage
habe ich ein Programm in Delphi 2010, die eine JET (mdb) Datenbank über ADO verwendet. Ich möchte die Definitionen von einigen der Abfragen in der Datenbank extrahieren können, und zeigt sie an den Benutzer. Ist dies möglich, entweder über SQL, einige ADO-Schnittstelle oder durch die Datenbank Abfragen selbst (ich scheine nicht Rechte MSysObjects zu haben).
Lösung
Einige dieser Informationen sind über ADOX Anrufe zur Verfügung. Es gibt einen Überblick über die api mit einigen Beispielen (leider nicht in Delphi) auf dem MSDN-Website .
Im Grunde, was Sie wollen, zu tun ist, um die ADOX-Typenbibliothek zu importieren, und dann die Hülle verwenden, die erzeugt wird, für Sie die zugrunde liegende API zuzugreifen. Von dort aus seinem so einfach, wie die Hierarchie der Navigation in den Daten, die Sie benötigen.
Sie müssen die spezifischen Ansicht zugreifen Objekt und von dort den Befehl Eigenschaft erhalten.
Andere Tipps
Via DAO, es ist ziemlich einfach. Sie extrahieren nur die SQL-Eigenschaft jedes QueryDef. In DAO in Access, das wäre:
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = DBEngine.OpenDatabase("[path/name of database]")
For Each qdf In db
Debug.Print qdf.SQL
Next qdf
Set qdf = Nothing
db.Close
Set db = Nothing
Ich weiß nicht, wie das übersetzen, aber ich denke, es ist die einfachste Methode, wenn Sie bequem mit DAO statt ADOX verwenden.
Ich benutze nicht alle ADO, aber ich glaube, dass es eine Sammlung von Ansichten hat und die SQL-Eigenschaft würde für SELECT-Abfragen arbeiten. Wenn Sie jedoch in immer die SQL für alle gespeicherten QueryDefs interessiert sind, dann würden Sie auch an den DML-Abfragen suchen müssen, so dass Sie auf die gespeicherten Prozeduren aussehen müsste. Ich würde die Syntax für das nachschlagen müssen, aber ich bin ziemlich sicher, das ist, wie Sie an die Informationen über ADO bekommen.