Excel : variables dans requête sql

Fermé
christof59 Messages postés 3 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 23 juillet 2008 - 21 juil. 2008 à 15:02
 algoplus - 23 juil. 2008 à 11:16
Bonjour,

Bonjour,
je souhaite importer des données d'une BDD Oracle dans Excel en bornant ma sélection par des dates.
pour ce faire, j'ai activé l'enregistreur de macro et j'ai créé une requête mais le code retourné est quelque peu indigeste et je n'arrive pas à insérer des variables à savoir remplacer les dates de la requête ('01/01/2008' and '30/01/2008') par deux variables.

Voilà ma requête :select releve_bt.code_pers, releve_bt.duree_mo_hd
from releve_bt where releve_bt.date_pointage between '01/01/2008' and '30/01/2008'

Voilà le code : With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Etat;UID=mabase;PWD=pwde;SERVER=server;", Destination:= _
Range("A3"))
.CommandText = Array( _
"SELECT releve_bt.CODE_PERS, releve_bt.DUREE_MO_HS1" & Chr(13) & "" & Chr(10) & "FROM COLBERT.releve_bt releve_bt" & Chr(13) & "" & Chr(10) & "WHERE (releve_bt.DATE_POINTAGE Between '01/01/2008' And '31/01/2008')" _
)
.Name = "Lancer la requête à partir de Etatl"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

J'ai essayé de remplacer 01/01/2008 par "&date_debut&" mais la syntaxe n'est pas bonne...Quelqu'un sait comment insérer ses variables ? A quoi correspondent les chr(13) chr(10) ?
A voir également:

3 réponses

christof59 Messages postés 3 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 23 juillet 2008 1
23 juil. 2008 à 10:19
Merci de ta réponse,

En fait, si je change 01/01/2008 par "&date_debut&" dans la requete avec les sauts de lignes et sauts de chariots, j'ai "erreur de syntaxe".
Alors je retire les sauts et concaténations :
.CommandText = Array( _
"select releve_bt.code_pers, personnel.matricule, releve_bt.no_releve, releve_bt.no_bt, personnel.nom, personnel.prenom, releve_bt.date_pointage, bt.resume_bt, detail_releve_bt.heure_debut, detail_releve_bt.heure_fin, detail_releve_bt.commentaire, releve_bt.duree_mo_hs1, releve_bt.duree_mo_hs2, releve_bt.duree_mo_hsn, releve_bt.duree_mo_hd from releve_bt, personnel, bt, detail_releve_bt where releve_bt.date_pointage between '01/01/2008' & '30/01/2008' and releve_bt.code_pers = personnel.code_pers and releve_bt.no_bt = bt.no_bt and releve_bt.no_releve=detail_releve_bt.no_releve (+)")

et là, j'ai erreur d'execution 13 - incompatibilité de type (ma requête fonctionne sur Sql+)

Je pense qu'une fois que ce problème sera réglé, j'arriverai à insérer mes variables - pouvez-vous m'aider ?
1
Pour les variables j'ai vu sur un autre post que c'était réglé!

Pour le message d'erreur, tu as peut-être fais des jointures sur des champs déclarés différemment dans les deux tables .
Voir la structure des tables pour ces champs et modifier.
Bon courage
1
chr(10) correspond à un sut de ligne et chr(13) à un retour chariot, ce qui fait que ta requête doit avoir une drôle d'allure.


SELECT releve_bt.CODE_PERS, releve_bt.DUREE_MO_HS1 FROM releve_bt WHERE releve_bt.DATE_POINTAGE Between " & date_debut & " and " & date_fin

et ca devrait marcher
0