Requete SQL avec VB

sany66 Messages postés 2 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 2 mars 2006 - 2 mars 2006 à 11:22
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 2 mars 2006 à 13:44
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 mars 2006 à 12:14
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%">
0
sany66 Messages postés 2 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 2 mars 2006
2 mars 2006 à 12:29
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....
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 mars 2006 à 13:44
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%">
0
Rejoignez-nous