Mettre des variables dans une requête SQL
Bonjour,
Je viens de revenir , je n'utilise que peu les forums mais la je pense revenir , car je débute un gros projet et j'ai besoin d'aide sur des points un peu pointu en VBA et la gestion dao.
Je suis sur un projet ou j'aimerais questionné une base de donnée que j'ai créé , seulement avec mon code je n'arrive pas a inserer une variable
je m'explique dans ma requete ma fois tres simple pour l'exemple , "SELECT name,PrixAction FROM Companies WHERE PrixAction = 30;" on a cette requete entre guillemet ce qui me pose un probleme car quand je fais
Code:
"SELECT name,PrixAction FROM Companies WHERE PrixAction =" & valeur & ";"
avec valeur une variable correspondant a une valeur que j'aurais rentré dans mon userform par exemple , ca marche pas . donc je demande votre aide
Je vous remercie d'avance et je pense que vous allez me revoir dans pas longtemps .
Cordialement
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 'recuperer une requete sql
Sub CopyFromRecordset_DAO()
Dim Db1 As Database
Dim Rs1 As Recordset
Dim requete As String
' Ouverture de la base de données
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\DBShare")
' Un objet Recordset représente les enregistrements d'une table
'requette a ecrire :
requete = "SELECT name,PrixAction FROM Companies WHERE PrixAction = 30;" ' mettre une guillemet pour le parametre
Set Rs1 = Db1.OpenRecordset(requete, Type:=dbOpenSnapshot) 'name:="R6"
' Effacement des données existantes dans la WorkSheet (sauf les titres)
' et copie des enregistrementsSELECT name, Symbol FROM Companies;
With Worksheets("Feuil1").Range("B1")
'With Selection.CurrentRegion
'Intersect(.Cells, .Offset(1)).Select
'End With
.ClearContents
.CopyFromRecordset Rs1
End With
'Fermeture de la Base de données
Db1.Close
End Sub |
Eh un petit message a philippe mais pas sur le pouce :p
Merci bcp pour ton message j'ai appris un truc , je met résolu j'ai reussi ca marche j'avais juste mis une variable dans un mauvais type merci le debugger et l'espion :p surtt
En tout cas j'espere que ca pourra aider d'autre personne , mon code et ton exemple philippe
Merci et bonne nuit et surement à trés vite :p
tjs un probleme aparement
voici ce que j'ecris et j'ai un msg d'erreur encore sur la ligne qui suis la requete sauf que je sais bien que ca viens de la requete , qui fonctionne tres biens sur access , mais le coup de la variable ... pose probleme.
J'ai simplifié mon prog , car le i est issu de l'userforme et est saisie par l'user. La on imagine un i en string , je ne vois pas ou est le pb , merci a vous et votre level :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 'recuperer une requete sql
Sub CopyFromRecordset_DAO2()
Dim Db1 As Database
Dim Rs1 As Recordset
Dim requete As String
Dim i As String
i = "Action EDF"
' Ouverture de la base de données
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\FinancialDataBase")
' Un objet Recordset représente les enregistrements d'une table
'requette a ecrire :
'_________________________Requete SQL_________________________________________
requete = "SELECT Valeur_Max, Valeur_Fermeture " _
& "FROM Cours, DateCours,SousJacent " _
& "WHERE Cours.RefC = DateCours.RefC " _
& "AND SousJacent.RefSJ = DateCours.RefSJ " _
& "AND DateCours between #01/12/2015# AND #01/16/2015# " _
& "AND NomSJ = " & i & "; "
'_____________________________________________________________________________________
Set Rs1 = Db1.OpenRecordset(requete, Type:=dbOpenSnapshot)
' Effacement des données existantes dans la WorkSheet (sauf les titres)
' et copie des enregistrements
With Worksheets("Feuil1").Range("B1")
'With Selection.CurrentRegion
'Intersect(.Cells, .Offset(1)).Select
'End With
.ClearContents
.CopyFromRecordset Rs1
End With
'Fermeture de la Base de données
Db1.Close
End Sub |