I. Introduction ♪▲
Le propos de cette note technique est de montrer comment travailler avec une base distante publiée avec 4D Server, en utilisant les technologies ASP, ADO, SQL et le Driver ODBC pour 4D Server. Notre exemple vous montrera comment établir une connexion avec cette base, sélectionner, insérer, modifier, et supprimer des enregistrements, en somme les quatre opérations fondamentales du langage SQL.
II. La source de données▲
Notre source de données, sur Mac ou PC, doit être lancée avec une version de 4D Server 2003 ou plus.
La structure de cette base, à laquelle nous allons nous connecter, est la suivante :
Comme nous pouvons le voir, notre base ne contient qu'une seule table représentant un fichier de personnel d'une entreprise.
III. Driver ODBC pour 4D Server▲
Nous devons créer une connexion à notre base 4D Server, en utilisant l'administrateur de Sources de données et le driver ODBC pour 4D Server. Pour comprendre les étapes qui suivent, il faudra se reporter à la documentation du driver ODBC. Il faut :
- aller dans le Panneau de configuration ;
- aller dans Outils d'administration ;
- choisir Sources de données (ODBC) ;
- aller dans l'onglet Source de données système et configurer la connexion à la base Personnel. Le nom donné à la source doit impérativement être « Personnel », car ce nom est utilisé dans les scripts ASP.
Finalement, on a :
Voilà pour le driver ODBC pour 4D Server. Nous allons vous montrer comment installer les fichiers ASP et les utiliser avant de montrer leur structure et le comment de leur construction.
IV. Configuration de l'application ASP▲
- Dans notre exemple, nous utilisons le serveur IIS de Microsoft. Vous pouvez installer IIS en utilisant l'ajout/suppression de programmes puis ajouter des composants Windows, dans le panneau de configuration.
- Allez dans le menu Démarrer, cliquez sur Exécuter et tapez inetmgr puis cliquez sur OK. La console des services Internet apparaît. Dans notre exemple, nous utilisons le serveur IIS.
- Déployez le nœud contenant le nom de votre ordinateur, puis le nœud Sites Web. Faire un clic droit sur le nœud Sites Web par défaut et choisir Nouveau, puis Site Web avec des extensions serveur.
- Dans l'assistant pour un nouveau site web, la seule donnée à renseigner est le nom du répertoire. Dans notre exemple, nous avons choisi ODBC. Le reste des paramètres proposés par l'assistant ne doit pas être modifié, notamment le contrôle d'accès.
- Cliquez sur Sites Web par défaut puis appuyer sur la touche F5. Le dossier de l'application web ODBC créée doit y apparaître.
Le résultat doit être le suivant : - Faire un clic droit sur le dossier créé, puis choisir Propriétés.
- Dans l'onglet Répertoire, sélectionnez Accès en lecture, puis vérifiez que l'option Exécuter les autorisations est réglée sur Scripts uniquement. Si le bouton Créer est actif, cliquez dessus.
- Allez dans l'onglet Documents. Cochez, si ce n'est fait, l'option Activer le document par défaut. Supprimez la liste des noms de documents déjà présents et ajouter le nom « Accueil.html ». Il s'agit de la page d'accueil de notre exemple.
- En fermant la boîte de dialogue, vous constaterez que l'icône du répertoire créé est maintenant verte pour vous signaler que l'application est prête.
- Sur le lecteur de votre système Windows actif, allez dans le dossier /Inetpub/wwwroot/. Vous devez normalement y retrouver le dossier de votre application. Copier le contenu de notre dossier ASP_ODBC dans le dossier de votre application.
V. Utilisation de l'application ASP▲
Depuis un navigateur web (Internet Explorer supérieur à la version 5), saisir l'url suivante : http://<adresse_ip>/<dossier_site>/ ou bien http://127.0.0.1/<dossier_site>/
Votre navigateur doit normalement vous afficher la page suivante :
À partir de cette étape, vous pouvez sélectionner, ajouter, modifier ou supprimer des enregistrements à loisir, en utilisant les différents liens.
VI. ASP, ADO et SQL▲
ASP (Active Server Page) est une technologie de Microsoft qui permet d'exécuter un script sur le serveur web, et de retourner le résultat sous forme de texte HTML au navigateur client. Nous avons choisi le serveur IIS, disponible depuis la version de Windows NT 4.0. Une possibilité existe pour des systèmes plus anciens comme Windows 95, en utilisant PWS (Personal Web Server). Pour ce faire, il faut télécharger « Windows NT 4.0 Option Pack ». Plusieurs langages sont possibles pour l'écriture des scripts. Nous avons opté pour l'un des plus répandus, Visual Basic Script (VBScript).
Afin de réaliser la connexion depuis la page ASP à la base de données 4D, nous utiliserons la technologie ADO (ActiveX Data Objects) de Microsoft. C'est un composant, utilisé dans les pages ASP, et permettant d'accéder à notre source de données 4D Server. ADO est constitué d'un certain nombre d'objets. Chaque objet est manipulé à travers les méthodes qui lui sont propres. On pourra notamment utiliser du SQL conjointement aux objets ADO.
SQL (Structured Query Language) est un langage universel permettant de faire des requêtes à une base de données et ainsi réaliser les 4 opérations fondamentales que nous voulons effectuer (sélectionner, insérer, modifier, et supprimer).
VII. Approche ASP▲
Les fichiers ASP se trouvent dans les dossiers « Operations » et « Includes » du dossier « ASP_ODBC ». Les fichiers ASP contiennent les commentaires nécessaires à leur compréhension et peuvent être ouverts avec un simple éditeur de texte comme Bloc-Notes ou WordPad.
Le dossier « Includes » contient deux fichiers ASP :
- le fichier « selection.asp » contient la procédure d'affichage de la liste des enregistrements de la base, mais sans pouvoir les modifier ;
- le fichier « sub_modification.asp » contient la procédure d'affichage de la liste des enregistrements de la base, avec possibilité de les modifier.
Le dossier « Opérations » contient plusieurs fichiers ASP et HTML, permettant de réaliser nos opérations SQL :
- pour afficher la liste des enregistrements, en lecture seule, on utilise le fichier « selectionner.asp ». Ce fichier contient uniquement un appel à la procédure « Selectionner() », qui liste les enregistrements de la base, et contenue dans le fichier « selection.asp » du dossier « Includes » ;
- pour ajouter un enregistrement, on présente le formulaire défini dans le fichier « fm_ajout.html ». Les données de ce fichier sont récupérées et traitées par le fichier « ajouter.asp » ;
- pour supprimer un enregistrement, on présente le formulaire défini dans le fichier « fm_suppression.html ». La référence de l'enregistrement qui y est saisie est récupérée et traitée par le fichier « supprimer.asp » ;
- pour modifier un enregistrement, la méthode choisie est un peu plus complexe. Le fichier « liste_modification.asp » dans le dossier « Operations » appelle la procédure liste_modification() contenue dans le fichier « sub_modification.asp » du dossier « Includes ». Cette procédure est une variante de la procédure « Sélectionner() », puisqu'elle propose un lien sur chaque enregistrement pour le modifier. Le clic sur le lien envoie la valeur du champ « Reference » au formulaire « dem_modifier.asp » dans le dossier « Operations ». Ce dernier formulaire charge l'enregistrement demandé. Le formulaire, modifié ou non, est transmis au fichier « modifier.asp » dans le dossier « Operations ».
Tous les fichiers ASP qui utilisent ADO ont une même structure :
- déclaration et initialisation des variables permettant la connexion ;
- création d'un objet ADO ;
- ouverture de la connexion ;
- exécution de la requête SQL et renvoi du résultat au navigateur (client) ;
- fermeture de la connexion ;
- destruction des objets ADO.
structure du fichier ASP :
<%
@ LANGUAGE=
"VbScript"
%>
<%
'--déclaration de l'objet connexion ObjCnx
'-- et de la variable strCnx contenant la chaîne de connexion
DIM
ObjCnx, strCnx
'-- initialisation de la chaîne de connexion telle que configurée dans
'-- l'administrateur de sources de données
strCnx =
"DSN=Personnel"
'-- Définition de notre requête SQL (Sélection de tous les enregistrements)
strSql =
"SELECT * FROM Personnel"
'-instanciation de l'objet connexion
SET
ObjCnx =
Server
.CreateObject
(
"ADODB.Connection"
)
'-- ouverture de la connexion en passant à l'objet connexion créé
'-- la chaîne de connexion
ObjCnx.Open
strCnx
'-- création d'un objet "ensemble ou collection d'enregistrements" rsPerso
'-- pour y récupérer les données de la requête SQL
SET
rsPerso =
Server
.CreateObject
(
"ADODB.RecordSet"
)
'-- affiliation de la connexion avec la requête SQL en les passant
'-- comme paramètres à l'objet « ensemble d'enregistrements » rsPerso
rsPerso.Open
strSql, conn %>
'-- ici viendra s'ajouter le code pour traiter le résultat de la requête,
'--Par exemple, l'affichage des enregistrements trouvés dans un tableau HTML
<HTML>
<HEAD>
<TITLE>
ADO et ODBC : requête SQL SELECT</TITLE>
</HEAD>
<BODY>
<H1 Align
=
"center"
>
Contenu de la table Personnel</H1>
<TABLE Width
=
"80%"
Align
=
"center"
bgColor
=
"#E0E0FF"
>
<TR>
<TH Align
=
"left"
>
Référence</TH>
<TH Align
=
"left"
>
Nom</TH>
<TH Align
=
"left"
>
Prénom</TH>
<TH Align
=
"left"
>
Fonction</TH>
<TH Align
=
"right"
>
Salaire</TH>
</TR>
<%
'-- itération de tous les enregistrements récupérés
'-- dans l objet Collection d'enregistrements
'--jusqu'au dernier enregistrement rsPerso.EOF
%>
<%
DO
UNTIL
rsPerso.EOF
%>
<TR>
<%
'-- Affichage des valeurs de chaque champ de l'enregistrement
<
TD Align=
"left"
><
% =
rsPerso.Fields
(
"Reference"
) %></TD>
<TD Align
=
"left"
><%
=
rsPerso.Fields
(
"Nom"
) %></TD>
<TD Align
=
"left"
><%
=
rsPerso.Fields
(
"Prenom"
) %></TD>
<TD Align
=
"left"
><%
=
rsPerso.Fields
(
"Fonction"
) %></TD>
<%
'-- formatcurrency pour le formatage monétaire selon la
'--configuration dans les options régionales de Windows %>
<
TD Align=
"right"
>
<
% =
formatcurrency
(
rsPerso.Fields
(
"Salaire"
)) %>
</TD>
</TR>
<%
'-- enregistrement suivant%>
<
% rsPerso.MoveNext
LOOP
%>
</TABLE>
</BODY>
</HTML>
<%
'-- fermeture de l'objet rsPerso « ensemble d'enregistrements »
rsPerso.Close
'--destruction de l'objet rsPerso
SET
rsPerso =
NOTHING
'--fermeture de la connexion
ObjCnx.Close
'--destruction de l'objet connexion
SET
ObjCnx =
NOTHING
%>
Les principaux objets ADO que nous utiliserons sont un objet « Connection », permettant de réaliser la connexion avec notre source de données et un objet « RecordSet », qui correspond à un ensemble d'enregistrements résultant de l'exécution d'une requête SQL.
La commande Server.CreateObject demande au serveur ASP de créer l'objet, en spécifiant son type en paramètre. Par exemple « ADODB.Connection » pour créer l'objet « Connection » ou « ADODB.RecordSet » pour l'objet « RecordSet ».
La variable strCnx est une variable alphanumérique contenant la définition de notre chaîne de connexion. Il faut noter que nous pouvons rendre plus complexe la chaîne de connexion, en y incluant des informations sur le driver ainsi que sur l'utilisateur comme le nom et le mot de passe. Par ailleurs, nous avons paramétré une source de données de type Système. Nous aurions pu tout aussi bien configurer une source de données de type Fichier ou Utilisateur.
La variable strSql est une variable alphanumérique contenant la définition de notre requête SQL, donc écrite dans le langage SQL. Ainsi, les requêtes utilisées dans nos fichiers sont :
- SELECT * FROM Personnel. Sélectionne tous les enregistrements de notre table [Personnel] avec tous ses champs ;
- INSERT INTO Personnel(Nom, Prenom, Fonction, Salaire) VALUES (« & »'« & fNom & »','« & fPrenom & »','« & fFonction & »',« & fSalaire & »)« . Ajoute un enregistrement. L'opérateur & permet une concaténation en VBScript d'une chaîne et de la valeur d'une variable. Les variables préfixées par f comme fNom, contiennent les données formatées provenant du formulaire HTML de saisie »fm_ajout.html« dans le dossier »Operations" ;
- DELETE FROM Personnel WHERE Reference = « & fReference. Supprime l'enregistrement dont la valeur du champ »Reference« est égale à »fReference", variable contenant la valeur entière formatée provenant du formulaire HTML de saisie 'fm_suppression.html' dans le dossier 'Operations' ;
- UPDATE Personnel SET Nom='« & fNom & »'« & »,Prenom='« & fPrenom & »'« & »,Fonction='« & fFonction & »'« & »,Salaire=« & fSalaire &_WHERE Reference = » & fReference. Met à jour l'enregistrement dont la valeur du champ « Reference » est égale à « fReference », avec les valeurs formatées provenant du formulaire HTML de modification renvoyé par « dem_modifier.asp » dans le dossier « Operations ».
La partie traitement du résultat de notre requête est constituée de 2 parties. Une partie HTML présentant les résultats sous forme de tableau et une partie ASP qui réalise une boucle (DO UNTIL <condition> … LOOP) où <condition> est l'atteinte du dernier enregistrement contenu dans l'objet RecordSet, soit rsPerso.EOF.
La dernière partie de notre fichier consiste à fermer un objet puis à le détruire. La fermeture s'effectue avec la méthode Close, par exemple rsPerso.Close pour fermer l'objet ensemble d'enregistrements « rsPerso ». La destruction de l'objet s'effectue par l'instruction « SET NomObjet = NOTHING » où NomObjet désigne le nom de notre objet à détruire. C'est ainsi que les objets de types Connexion et ensemble d'enregistrements sont détruits, ObjCnx et rsPerso.
Pour l'utilisation des autres requêtes comme l'ajout, la modification et la suppression des enregistrements, le principe suivi est identique à celui suivi ici pour la sélection.
VIII. Conclusion▲
Cette note technique vous a donné un aperçu de l'utilisation conjointe de la technologie ASP et ADO avec des bases de données 4e Dimension. Nous aurions pu utiliser un autre langage très répandu comme PHP. ADO offre par ailleurs beaucoup d'autres objets qui permettent des manipulations plus fines des données, comme les transactions. À vous donc de jouer…
IX. Bases exemples▲
Téléchargez les bases exemples :
base exemple Mac
base exemple Windows