Requete SQL avec VB

Signaler
Messages postés
2
Date d'inscription
mercredi 1 mars 2006
Statut
Membre
Dernière intervention
2 mars 2006
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
Bonjour à tous,

Je débute dans la programmation et je connais mes premières galères....
Alos voilà mon problème: je veux faire une requete SQL (pour interroger une base de données access) via VB et renvoyer le résultat sous excel.
J'ai fait tous les paramétrages (acces aux librairies) mais c'est la requete en elle même qui me pose problème.
voilà où j'en suis:

Sub ExtractFromAccess_DAo()
Dim Db1 As Database
Dim qdf As QueryDef
Dim rs1 As Recordset
Dim chSQL As String


Set Db1 = DBEngine.OpenDatabase("C:\Documents and Settings\Propriétaire\Mes documents\extr31bis.mdb")
Set rs1 = Db1.OpenRecordset("SELECT * FROM [titi] WHERE [trade ID]>#01/03/2006#")


Set qdf = Db.CreateQueryDef([Date], chSQL)


'j'exporte vers le fichier
DoCmd.OutputTo acOutputQuery, [Date], acFormatXLS, "C:\Documents and Settings\Propriétaire\Mes documents\resultat.xls", False
Set qdf = Nothing


End Sub

La ligne en rouge bloque! (en fait je veux créer une nouvelle requete s'appelant "date".
Ensuite, il me dit ne pas connaitre "Date" => mais c'est le nom que je veux donner à ma nouvelle requete donc forcément il ne la connait pas. J'ai donc du faire une erreur quelque part....

Si qqun peut m'aider ça serait vraiment sympa...
Merci d'avance à ceux qui se pencheront sur mon p'tit problème

3 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Je ne connais pas grand chose aux requettes mais pour moi déjà concernant CreateQueryDef, je pense qu'il faudrait écrire "Date" et non pas [Date]. Ensuite je pense que ta variable chSQL devrais contenir le texte complet de ta requette or actuellement c'est une chaine completement vide, tu ne l'as pas initialisée.

Ensuite dans ta fonction d'export, est-tu sur que ce soit [Date] qu'il faille mettre, bizarement j'aurais plutot mis qdf à la place, mais bon je ne connais pas cette fonction, donc je n'en sais rien.

<hr size="2" width="100%">
Messages postés
2
Date d'inscription
mercredi 1 mars 2006
Statut
Membre
Dernière intervention
2 mars 2006

Merci pour ta réponse!
Je viens de faire les modifs suivantes (en bleu):

Set Db1 = DBEngine.OpenDatabase("C:\Documents and Settings\Propriétaire\Mes documents\extr31bis.mdb")
Set rs1 = Db1.OpenRecordset("SELECT * FROM [titi] WHERE [trade date]>#01/03/2006#")


chSQL = "SELECT * FROM [titi] WHERE [trade date]>#01/03/2006#"
Set qdf = Db1.CreateQueryDef("Date", chSQL)


'On exporte vers le fichier
DoCmd.OutputTo acOutputQuery, qdf, acFormatXLS, "C:\Documents and Settings\Propriétaire\Mes documents\resultat.xls", False

Le bleu est maintenant bien lu par la machine mais le rouge pose encore problème.
Sinon j'ai une question: est il utile de déclarer ma requete dans "set rs1= ......" puisque que je la déclare ensuite dans chSQL??? ou bien dois je la preciser aux 2 endroits....
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
A priori non tu n'as pas besoin de Db1.OpenRecordset, puisque qdf est quelque part lui aussi un recordset , totalement indépendant de rs1 mais contenant les mêmes données (puisque même requette). En gros, pour moi, ça fait double emploi

Pour ta fonction d'exportation, j'ai reussi à trouver un petit bout d'aide. Il faut mettre le nom de l'objet.
Alors dans ton cas, tu peux peut-etre essayer avec qdf.name, sinon essaye avec "Date" à la place de qdf.

Mais j'avoue que c'est un peu du chinois pour moi tout ça.

<hr size="2" width="100%">