Afficher une base ACCESS en ASP.
Soit une BDD créer sous ACCESS que l'on appelera "DVD" contenant n lignes et 4 colonnes définies par : "Titre", "Acteur", "Date" et un "Id" comme clé primaire. Il s'agit d'effectuer des requêtes sur cette base de données et d'afficher les résultats dans une page web au format ASP à laquelle on adjoint une feuille de style css pour l'habillage.
Avant d'utiliser les objets ADO pour accéder à la BDD, il faut la charger dans la mémoire de la ADODB Library. Pour charger les objets ADO il faut declarer les noms de variables avec l'attribut " Dim ". Ensuite utiliser l'attribut "Set" et la fonction "Server.CreateObject" pour créer les objets et établir une connexion.
<%
Dim objConnection
set objConnection = Server.CreateObject("ADODB.Connection")
%>
Déclarer l'objet "Recordset" qui contiendra les enregistrements issus de la BDD :
Dim objRecordset
Set objRecordset = Server.CreateObject("ADODB.Recordset")
Déclarer le type de la BDD, sa localisation sur le serveur, puis reste a ouvrir la connexion avec la BDD :
Dim DSNStatement
DSNStatement = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="
DSNStatement = DSNStatement & Server.MapPath("/database/DVD.mdb")
objConnection.Open DSNStatement
Attention : il faut en général renseigner le chemin compet : exple "http://hebergeur.com/monnom/database/DVD.mdb" donnera : MapPath("/monnom/database/DVD.mdb")
Il faut écrire un requete pour aller intérroger la BDD en déclarant la variable qui va contenir la requete : "strSQL", dans cet exemple on veut lire tous les champs (id,Titre,Acteur,Date) de toutes les occurences ( n lignes ) de la table "DVD" rangés d'apres la clé Primaire (Id) :
Dim strSQL
strSQL = strSQL & "SELECT * FROM DVD order by ID"
Ensuite il faut lancer la requete "strSQL" sur l'objet de connexion "objconnection" et recuperer le résultat dans l'objet d'enregistrement: "RecordSet"
objRecordset.Open strSQL, objConnection, adOpenKeyset
objRecordset.AbsolutePage = CLng(Session("CurrentPage"))
Nombre d'enregistrement à récuperer, peux être utile pour un affichage a l'écran :
Dim Nb
nb = objRecordset.recordcount
Pour récupérer les champs de la premiere ligne lue et les stocker dans des variables :
Dim Titre
Dim Acteur
Dim Date
Titre =objRecordset("Titre")
Acteur =objRecordset("Acteur)
Date=objRecordset("Date")
Id =objRecordset("Id")
Ensuite il faut aller lire l'enregistrement suivant contenu dans le "RecordSet" :
objRecordset.MoveNext
... et l'afficher comme précedemment.
Ne pas oublier d'arreter la lecture quand il ne reste plus d'enregistrement a lire :
If objRecordset.EOF then...%>
...(stop lecture)...
Puis refermer les objets :
objRecordset.Close
objConnection.Close
Set objRecordset = Nothing
Set objConnection = Nothing
Principe d'une boucle de lecture des enregistrements de la table, lecture de 5 occurences :
For i = 1 To 5
...(code html pour afficher les résultat:
If objRecordset.EOF then
exit for
End if
Next
Affichage des résultats dans les balises html :
<html>
<table> <tr> <th><%=objRecordset("Titre")%></th> <th><%=objRecordset("Acteur")%></th> <th><%=objRecordset("Date")%></th> </tr> </table>
</html>
Pour finir on applique une alternance des lignes paires et impaires qui peut être utile pour appliquer une classe de style alternée par ligne:
<%if int(i/2) = i/2 then %>
.... (affichage CSS lignes paires)...
<%else%>
.... (affichage CSS lignes impaires)...
<%end if%>
..ce qui peut donner :
Haut de page
Exemple pratique : vidéothèque.
NB : s'assurer que le site puisse héberger les bases ACCESS ( assez rare ) et le langage ASP ( plutôt rare )!!!