J'ai un programme dans Delphi 2010 qui utilise une base de données JET (mdb) via ADO. Je voudrais pouvoir extraire les définitions de certaines requêtes dans la base de données et 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 de droits sur MSysObjects).Extraction de la définition de requête à partir de la base de données JET via ADO
Répondre
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.
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.
- 1. Equivalent de la fonction NETWORKDAYS d'Excel avec Jet ADO
- 2. Conseil de base de données nécessaire: portage de l'application VB6/ADO/JET à VB.NET
- 3. Extraction de données aléatoires à partir de la base de données de Cassandra
- 4. Problème Insertion de données dans la base de données MS Access en utilisant ADO via Python
- 5. Définition par programme de la hauteur/largeur de l'image à partir de la base de données
- 6. extraction de données à partir d'une requête SQL
- 7. Extraction d'informations de base de données à partir de gridviews qui n'apparaissent pas dans la grille
- 8. Requête à la base de données MySQL
- 9. Base de données Jet et requêtes directes, paramètres
- 10. Extraction de données à partir d'un objet
- 11. Extraction de données de la base de données Postgres vers XML via le problème de codage Perl
- 12. extraction de données à partir d'un fichier
- 13. Reverse engineering SQLAlchemy définition de classe déclarative à partir de la base de données MySQL existante?
- 14. extraction de données à partir d'un plist
- 15. Servir JSF à partir de la base de données
- 16. Créer une base de données à partir du modèle de données d'entité ADO
- 17. Table de base de données ADO Colonne booléenne
- 18. autoriser l'utilisateur à partir de la base de données mysql
- 19. Conception de base de données: Définition de l'accès aux données à partir d'une liste de villes
- 20. Connexion de la base de données à partir de l'applet
- 21. formation de texte à partir de la base de données
- 22. Ajouter une valeur à la requête de base de données
- 23. Taille de la base de données via WMI dans .NET
- 24. Conception de la base de données: définition du contrôle d'accès
- 25. Paramètres de requête SSIS pour la source ADO .NET
- 26. Getdate() équivalent pour la base de données Jet/Access. J'ai besoin des enregistrements du mois dernier
- 27. Définition d'un paramètre dans la base de données SQL Server
- 28. Extraction de données binaires à partir de SQL Server à l'aide de T-SQL
- 29. Nettoyage et extraction de données à partir de fichiers texte
- 30. Définition de variables d'application dynamiques ColdFusion à partir d'une requête
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. –
Je crois que la connexion ADOX est une connexion ADO. – skamradt
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. –