2010-10-14 20 views

Répondre

1

Certaines de ces informations sont disponibles via les appels ADOX. Il y a un aperçu de l'API avec quelques exemples (malheureusement pas dans Delphi) sur le MSDN website.

Fondamentalement, ce que vous voulez faire est d'importer la bibliothèque de types ADOX, puis d'utiliser le wrapper généré pour accéder à l'API sous-jacente. De là, c'est aussi simple que de naviguer dans la hiérarchie pour obtenir les données dont vous avez besoin.

Vous aurez besoin d'accéder au View object spécifique, et à partir de là, vous obtiendrez la propriété de commande.

+0

Merci. J'ai trouvé du matériel ADOX spécifique à Delphi ici: http://delphi.about.com/od/database/l/aa072401a.htm. Je vais le lire et voir si ça fait ce dont j'ai besoin. Bien que j'espère vraiment quelque chose je peux pousser à travers l'objet ADOCommand régulier ou interroger sur l'objet ADOConnection. –

+0

Je crois que la connexion ADOX est une connexion ADO. – skamradt

+0

Notez que les affichages ne sont que des requêtes SELECT, et non des requêtes DML. Il s'agit donc d'un résultat incomplet pour toutes les requêtes QueryDefs enregistrées dans une base de données Access. –

0

Via DAO, c'est plutôt facile. Vous venez d'extraire 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 cela, 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 n'utilise pas ADO du tout, mais je suppose qu'il a une collection de vues et la propriété SQL fonctionnerait pour les requêtes SELECT. Toutefois, si vous souhaitez obtenir le SQL pour tous les QueryDefs enregistrés, vous devez également consulter les requêtes DML. Vous devez donc consulter les procédures stockées. Je devrais rechercher la syntaxe pour cela, mais je suis à peu près certain que c'est ainsi que vous obtiendriez l'information via ADO.