2010-09-03 6 views
2

Est-ce que quelqu'un connaît un moyen de déconstruire une instruction SQL (prendre une instruction SQL select, extraire des colonnes de chaque SELECT, des tables de chaque FOR et chaque JOIN, et des critères de filtrage de chaque WHERE. Je peux ensuite mettre ces données dans une table de nomenclature pour créer une "carte" de la requête), y compris les sous-requêtes, en utilisant VBA? J'ai un projet pour mapper les vues Teradata dans une base de données Access. J'aimerais avoir une méthode automatisée pour le faire.Analyse/déconstruction de SQL avec VBA-Access

+1

Essayez-vous d'analyser SQL? – BIBD

+0

Je veux prendre une instruction SQL select, extraire des colonnes de chaque SELECT, des tables de chaque FOR et chaque JOIN, et des critères de filtrage de chaque WHERE. Je peux ensuite mettre ces données dans une table de nomenclature pour créer une "carte" de la requête. – DataZombies

+0

Si vous enregistrez une instruction SELECT en tant que Access QueryDef, vous pouvez identifier les champs de sortie en parcourant la collection QueryDef.Fields. Malheureusement, ce n'est qu'un des éléments que vous voulez. Je ne sais pas comment obtenir les autres. – HansUp

Répondre

1

Vous souhaitez accéder aux sous-structures arbitraires d'une requête SQL (y compris les sous-requêtes SELECT)? Ce dont vous avez besoin est un analyseur complet pour le dialecte SQL d'intérêt.

SQL est un langage assez vaste et compliqué. Il est possible de coder à la main un analyseur de descente récursif pour ce faire, mais c'est beaucoup de travail. Vous seriez probablement mieux avec un générateur d'analyseur et un SQL BNF pour le nourrir.

Mais le fait que vous vouliez faire cela dans VBA laisse entendre que vous ne trouverez probablement pas un tel générateur d'analyseur. Vous devrez peut-être appeler un générateur d'analyseur codé dans une autre langue (par exemple, C#) si vous voulez avoir une chance raisonnable de le faire avec un effort modeste, et aller trouver un analyseur SQL préexistant.