Table of contents
XML
TOC
Réduire la table des matières
Développer la table des matières

Créer des instructions SQL qui incluent des variables et des contrôles

office 365 dev account|Dernière mise à jour: 04/10/2017
|
1 Contributeur

Lorsque vous manipulez des objets DAO ou ADO, vous pouvez être amené à créer une instruction SQL dans le code. Cette étape est souvent appelée « insertion » de code SQL. Par exemple, si vous créez un objet QueryDef, vous devez définir sa propriété SQL à partir d'une chaîne SQL valide. Cependant, si vous utilisez un objet ADO Recordset, vous devez définir sa propriété Source à l'aide d'une chaîne SQL valide.

Pour créer une instruction SQL, créez une requête dans la grille de création de requête, basculez en mode SQL, et copiez-collez l'instruction SQL correspondante dans votre code.

Souvent une requête doit être basée sur des valeurs que l'utilisateur fournit ou qui changent dans différentes situations. Si c'est le cas, vous devez inclure des variables ou des valeurs de contrôle dans votre requête. Le moteur de base de données Access traite toutes les instructions SQL, mais pas les variables ou les contrôles. Par conséquent, vous devez créer votre instruction SQL de manière à ce qu'Access détermine d'abord ces valeurs et les concatène ensuite dans l'instruction SQL qui est passée au moteur de base de données Access.

Création d'instructions SQL à l'aide de DAO

L'exemple suivant montre comment créer un objet QueryDef avec une seule instruction SQL. Cette requête retourne toutes les commandes de la table Commandes qui ont été passées après le 31 mars 2006.

Public Sub GetOrders()

   Dim dbs As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim strSQL As String

   Set dbs = CurrentDb
   strSQL = "SELECT * FROM Orders WHERE OrderDate >#3-31-2006#;"
   Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

End Sub

L'exemple suivant crée le même objet QueryDef à l'aide d'une valeur stockée dans une variable. N'oubliez pas que les dièses (#) qui entourent les valeurs de date doivent être inclus dans la chaîne de manière à ce qu'ils soient concaténés avec la valeur de date.

Dim dbs As Database, qdf As QueryDef, strSQL As String
Dim dteStart As Date
dteStart = #3-31-2006#
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & dteStart & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

L'exemple suivant crée un objet QueryDef à l'aide d'une valeur d'un contrôle nommé OrderDate situé dans le formulaire Commandes. N'oubliez pas que vous devez fournir la référence complète au contrôle et que vous devez placer la date entre dièses dans la chaîne.

Dim dbs As Database, qdf As QueryDef, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & Forms!Orders!OrderDate & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

Création d'instructions SQL à l'aide d'ADO

Dans cette section, vous allez créer les mêmes instructions que dans la précédente, mais, cette fois-ci, en utilisant ADO en tant que méthode d'accès aux données.

L'exemple de code suivant montre comment créer un objet QueryDef avec une seule instruction SQL. Cette requête retourne toutes les commandes de la table Commandes qui ont été passées après le 31 mars 2006.

Dim dbs As Database, qdf As QueryDef, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate >#3-31-2006#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

L'exemple suivant crée le même objet QueryDef à l'aide d'une valeur stockée dans une variable. N'oubliez pas que les dièses (#) qui entourent les valeurs de date doivent être inclus dans la chaîne de manière à ce qu'ils soient concaténés avec la valeur de date.

Dim dbs As Database, qdf As QueryDef, strSQL As String
Dim dteStart As Date
dteStart = #3-31-2006#
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & dteStart & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

L'exemple de code suivant crée un objet QueryDef à l'aide d'une valeur d'un contrôle nommé OrderDate situé dans le formulaire Commandes. La référence complète du contrôle est fournie et inclut la date entre dièses dans la chaîne.

Dim dbs As Database, qdf As QueryDef, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & Forms!Orders!OrderDate & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)
© 2018 Microsoft