Pour SQL Server celà s'appelle "Procédures Stockées" car le Transact-SQL permet de faire des mini-programmes qui agiront directement sur la requête et son résultat. Pour Access, dans notre cas, celà s'appellerait plutôt des "Requêtes Enregistrées". Comment faire appel à ces requêtes à partir d'une page ASP, avec ou sans paramètres, avec ou sans retour de valeurs, c'est ce que nous allons voir dans cette fiche.
La requête est au coeur de la base, elle n'est plus passée en "dur" à la base de données puis interprétée : gain de vitesse en exécution
Si un jour vous avez besoin de renommer votre base, des champs, vous n'avez plus à retaper toutes vos requêtes dans le code de la page, vous les modifiez dans la base puis dans la requête stockée une seule fois : maintenance aisée
Requis
Nous allons prendre une base de test (sous Access2000), ici appelée "proc" qui contiendra 4 champs :
id : numéro auto
resume : texte 50 caractères
description : mémo
clic : numérique
Remplissez quelques lignes pour avoir un jeu d'enregistrements à utiliser lors des requêtes.
1er cas : aucun paramètre, aucun retour
Votre requête est un INSERT qui se contente de rajouter une ligne à votre table, aucun paramètre n'est passé, aucune valeur n'est attendue en retour, votre requête ressemble à :
INSERT INTO [proc] ( resume, description, clic ) VALUES ('resumé','texte de description','1');
Dans Access, allez dans l'onglet "Requêtes", en mode "SQL" puis tapez cette requête. Vous verrez qu'elle se transforme en "Requête d'Ajout" et qu'elle ajoute bien une ligne dans notre table.
L'appel dans une page ASP à cette requête se fera par la ligne Conn.Execute "nom_requete" comme dans cet exemple avec réaffichage des données pour test :
SQL="SELECT * FROM [proc]" Set RS = server.createobject("ADODB.Recordset") RS.Open SQL,Conn , 0, 1
' tant qu'il y a des fiches while not RS.eof %> <%=RS("id")%> - <%=RS("resume")%> - <%=RS("description")%> - <%=RS("clic")%><br> <%RS.MOVENEXT ' fiche suivante wend
' Fermeture des objets RS.close ... %>
Execute est une méthode de l'objet Connection qui exécute une requête SQL ou dans notre cas la requête stockée dont le nom est passé en paramètre.
Ou en utilisant l'objet Command, on remplacera alors Conn.Execute "cas1" par :
<% ' Création de l'objet Set Comm = Server.CreateObject("ADODB.Command") ' on lui spécifie la connection à utiliser Comm.ActiveConnection = Conn ' on appele la requete Comm.CommandText = "cas1" ' execution Comm.Execute %>
Dans ce 1er cas, l'utilisation de Conn.Execute "cas1" est suffisante. Le recours à l'objet Command se justifie plus dans le cas où des paramètres sont passés.