Exporter le resultat d'une requete SQL

nicod.lyon Messages postés 4 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 10 octobre 2003 - 9 oct. 2003 à 01:49
nicod.lyon Messages postés 4 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 10 octobre 2003 - 10 oct. 2003 à 18:20
Bonjour,

Je bosse sur un petit projet qui utilise Visual Basic sous Access 2000.
Il consiste en une base de données "ma_base" à laquelle est couplée un formulaire Access.
Ce formulaire me permet, en cochant des cases, de faire une recherche multicritère sur ma base.
Le résultat est affiché dans une zone de Liste ....jusque là, tout fonctionne à merveille. Les enregistrements affiché sont le resultat d'une commande SQL "select toto from ma_base whre etc...."
La fonctionnalité que je veux rajouter:
Quand on double-clique sur la zone de liste, le RESULTAT de ma commande SQL est automatiquement exporté dans un fichier texte (ou xls) qui s'ouvre.
On m'a parlé d'utiliser les recordset ...bof bof
Je me suis également renseigné sur le presse-papier via la methode ClipBoard (laquelle n'est pas presente dans l'aide Access).
Si vous avez une idée....voire meme la solution, n'hésitez pas!
Merci d'avance.

-Nico-

4 réponses

cs_jeannot45 Messages postés 112 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 27 décembre 2004
9 oct. 2003 à 14:36
Peut etre une idée ...

tu peux sur l'evement double-Clic de ton controle Zone de liste déclencher une macro qui utiliserait l'action "TranférerFeuilleCalcul" ...

Jeannot
0
nicod.lyon Messages postés 4 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 10 octobre 2003
9 oct. 2003 à 17:48
Je viens tout juste d'essayer.
Dans le concept l'idée est bonne.
Le problème c'est que dans la création de la macro un des paramètres demandés est "table" or moi je voudrais pouvoir mettre le resultat de ma commande SQL (cf mon premier message).
Peut-etre est-ce possible, lorsque l'on double-clique, d'exporter le resultat de ma requete SQL dans une table temporaire tmp_tbl, puis de lancer l'execution de la macro ?

-Nico-
0
nicod.lyon Messages postés 4 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 10 octobre 2003
10 oct. 2003 à 01:13
Bonsoir,
Une première solution qui fonctionne mais est un peu "crado" à mes yeux:

' Je crée ma table temporaire
DoCmd.RunSQL "CREATE TABLE table_temp (col1 VARCHAR, col2 VARCHAR)",0
' Je remplis la table ainsi créé grace a ma requete SQL contenue dans ma_requete
DoCmd.RunSQL "INSERT INTO table_temp (col1, col2) " & ma_requete_SQL & "",0
' J'exporte TOUTE la table teble_temp dans un fichier xls
DoCmd.OutputTo acOutputTable, "table_temp", acFormatXLS, "c:\mon_rapport.xls", True
' Je suis trés propre comme garçon, donc ...
DoCmd.RunSQL "drop table table_temp"


Le hic c'est qu'Access me demande une confirmation pour ajouter les données dans la base temporaire ... n'y at-il pas moyen de'empecher ça (genre lui donner en dur une reponse par défaut?) ?
Ma table temporaire ne peut elle as etre créée de manière plus simple?
N'y a t'il pas d'autres solutions plus ...propres ?

-Nico-
0
nicod.lyon Messages postés 4 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 10 octobre 2003
10 oct. 2003 à 18:20
Decidemment, il n'y a que moi qui me comprenne. :-)
Bon, je viens de trouver,ici même comment empecher les messages systèmes de s'afficher lors de mes RunSQL
Il suffit de faire un DoCmd.SetWarnings False
Histoire de pouvoir voir votre appli se planter, au cas ou, je me permet de vous conseiller de repositionner ce flag à True, une fois les commandes SQL passée.
Au final cela donne donc:

' Je crée ma table temporaire
DoCmd.SetWarnings False
DoCmd.RunSQL "CREATE TABLE table_temp (col1 VARCHAR, col2 VARCHAR)",0
' Je remplis la table ainsi créé grace a ma requete SQL contenue dans ma_requete
DoCmd.RunSQL "INSERT INTO table_temp (col1, col2) " & ma_requete_SQL & "",0
' J'exporte TOUTE la table teble_temp dans un fichier xls
DoCmd.OutputTo acOutputTable, "table_temp", acFormatXLS, "c:\mon_rapport.xls", True
' Je suis trés propre comme garçon, donc ...
DoCmd.RunSQL "drop table table_temp"
DoCmd.SetWarnings True


voili voilà
Au passage j'ai rajouté un test qui permet d'etre sûr que lorsque l'appli demarre, ma base temporaire n'existe pas.

-Nico-
0
Rejoignez-nous