Excel : variables dans requête sql
christof59
Messages postés
3
Statut
Membre
-
algoplus -
algoplus -
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) ?
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:
- Excel : variables dans requête sql
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
3 réponses
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 ?
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 ?