COMMENT FAIRE : Appeler une requête paramétrée à une base de données Access avec ADO

Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).

Résumé

Cet article explique comment appeler une requête paramétrée à une base de données Access à l'aide de l'objet Command et de la collection Parameters ADO. Cet article utilisera des exemples VBScript exécutés en tant que pages ASP (Active Server Pages).

Plus d'informations

REMARQUE : les exemples fournis dans cet article utilisent la base de données Les Comptoirs et ne fonctionneront que si cette base de données (Comptoir.mdb) existe sur le serveur IIS (Internet Information Server) et s'il existe un nom DSN ODBC "Les Comptoirs" dirigé vers Comptoir.mdb.


Il existe deux méthodes pour appeler une requête paramétrée :
  • spécification d'une instruction SQL qui utilise des points d'interrogation (?) comme espaces réservés pour les paramètres (par exemple, SELECT Name FROM Table WHERE Name = ?) ;
  • création d'une requête dans une base de données Access qui contient des paramètres.
Pour cet exemple, je vais présenter les deux méthodes.

Avant de commencer, créez dans la base de données Les Comptoirs une requête Access nommée SampleQuery et créée en mode SQL à partir de ce qui suit :

SELECT * FROM Products WHERE ProductID = [@productid]
L'exemple de code suivant appellera la requête Access nommée SampleQuery à l'aide de l'objet Command et de la collection Parameters ADO.

Pour utiliser l'exemple de code, créez une page ASP dans un dossier virtuel sur un ordinateur qui exécute les services Internet (IIS). Copiez et collez le code ASP sur la page ASP. Copiez le fichier Adovbs.inc dans ce dossier virtuel (ce fichier se trouve dans le dossier \programFiles\CommonFiles\System\ADO).

<%@ Language=VBScript %>
<HTML>
<BODY>

<!--#include file=adovbs.inc -->

<%
Set objConn = Server.CreateObject("ADODB.Connection")
Set objCmd = Server.CreateObject("ADODB.Command")
Set objRS = Server.CreateObject("ADODB.Recordset")

objConn.Open "dsn=northwind;"

objRS.CursorType = adOpenForwardOnly
objRS.LockType = adLockOptimistic

Set objCmd.ActiveConnection = objConn

'If a SQL statement with question marks is specified, then the
'CommandType is adCmdText. If a query name is specified, then
'the CommandType is adCmdStoredProc.

objCmd.CommandText = "SampleQuery"
objCmd.CommandType = adCmdStoredProc

'Create the parameter and populate it.

Set objParam = objCmd.CreateParameter("@productid" , adInteger, adParamInput, 0, 0)
objCmd.Parameters.Append objParam

objCmd.Parameters("@productid") = 15 'Return the product with ProductID = 15

'Open and display the Recordset.

objRS.Open objCmd
%>
<table border=1 cellpadding=2 cellspacing=2>
<tr>
<%
For I = 0 To objRS.Fields.Count - 1
Response.Write "<td><b>" & objRS(I).Name & "</b></td>"
Next
%>
</tr>
<%
Do While Not objRS.EOF
Response.Write "<tr>"
For I = 0 To objRS.Fields.Count - 1
Response.Write "<td>" & objRS(I) & "</td>"
Next
Response.Write "</tr>"
objRS.MoveNext
Loop
%>
</table>

<%
objRS.Close
objConn.Close
Set objRS = Nothing
Set objCmd = Nothing
Set objConn = Nothing
%>
</BODY>
</HTML>
Pour utiliser une instruction SQL avec des points d'interrogation comme espaces réservés pour les paramètres, utilisez le même exemple de code, mais mettez à jour les propriétés CommandText et CommandType comme dans l'exemple suivant :

objCmd.CommandText = "SELECT * FROM Products WHERE ProductID = ?"
objCmd.CommandType = adCmdText
Propriétés

ID d'article : 200190 - Dernière mise à jour : 3 févr. 2004 - Révision : 1

Commentaires