Question

J'ai un programme en Delphi 2010 qui utilise une base de données JET (mdb) via ADO. Je voudrais être en mesure d'extraire les définitions de quelques-unes des requêtes dans la base de données et de les afficher à l'utilisateur. Est-ce possible soit via SQL, une interface ADO ou en interrogeant la base de données elle-même (je ne semble pas avoir droit à MSysObjects).

Était-ce utile?

La solution

Certaines de ces informations sont disponibles via des appels ADOX. Il y a une vue d'ensemble de l'api avec quelques exemples (malheureusement pas en Delphi) sur le site MSDN .

En fait ce que vous voulez faire est de est d'importer la bibliothèque de type ADOX, puis utilisez l'emballage qui est généré pour vous d'accéder à l'API sous-jacente. De là, est aussi simple que naviguer dans la hiérarchie pour obtenir les données dont vous avez besoin.

Vous aurez besoin d'accéder à la Voir objet , et de là obtenir la propriété de commande.

Autres conseils

Via OAC, il est assez facile. Vous extrayez la propriété SQL de chaque QueryDef. Dans DAO depuis Access, ce serait:

  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

Je ne sais pas comment traduire, mais je pense que c'est la méthode la plus simple une fois que vous êtes à l'aise avec l'utilisation de DAO au lieu de ADOX.

Je ne pas utiliser ADO du tout, mais je devine qu'il a une collection de vues et la propriété SQL fonctionnerait pour les requêtes SELECT. Toutefois, si vous êtes intéressé à obtenir le SQL pour tous les QueryDefs enregistrés, vous devrez également nous de regarder les requêtes DML, de sorte que vous auriez à regarder les procédures stockées. Je dois rechercher la syntaxe pour cela, mais je suis certain que comment vous obtiendriez à l'information via ADO.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top