Section courante

A propos

Section administrative du site

 Langage  Elément  Programmation  IDE  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Remarques
Opérateur
Conditionnel
Boucle
Type de données
Définition de fonction
Référence
Directive
Bonjour
Base de données
Biochimie
Conversion
Finance
Géographie
Géométrie
Gouvernement
Histoire
Mathématique
Médicale
Météorologie
Océanographie
Sport
Temps
Trigonométrie
Validation
VB/ASP (Technologie en tiers)
Recherche ODBC
Calcul du calcium corrigé
ISO 8859 à ANSI
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Taxe de vente canadienne
Chiffre romain
Nombre premier
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Année bissextile
Date de la Pâque
ArcCos
ArcSin
Atn/ATan/ArcTan
Courriel
Dreamweaver
HomeSite
Visual Studio
Vocabulaire
ASP versus PHP
Bibliographie
Préface
Notes légal
Dictionnaire
Recherche

Introduction

La technologie dit en «N-tiers» est une technique visant à isolé chacun des trois niveaux de traitement d'un système de gestion. Les avantages apporté sont la sécurité, performance et la possibilité d'exécuter les processus sur plusieurs serveurs distinct. Les trois paliers sont donc les suivants :

Ainsi, on retrouve donc trois couches de code totalement distinguent mais ascendante. Les dépendances ont lieu systématiquement vers le niveau le plus bas, sens jamais que la partie du bas (BD) est conscience de la partie du haut (ASP). On retrouve de se fait les trois parties suivantes :

Prérequis

Les prérequis serveur, sont le support de l'ASP 3.0, et optionnellement XSL et XML. On devra donc avoir un serveur Windows NT 4, Windows 2000 Server ou Windows Server 2003.

Installation

Une fois créer votre DLL en VB, on doit passer directement par COM+ (Component Object Model). Généralement, celle-ci fera une liaison avec un «Microsoft Jet» en utilisant des requêtes SQL.

Création du projet dans le Service des Composants (COM+): Ce service est disponible dans les Outils d'administrateur (Activez-le dans les options du «Barre de tâche» et «Menu Démarrer» s'il n'est pas présent). On doit donc, en premier lieu, créer un projet du nom de votre choix "projet1" dans le répertoire «/Services de composantes/Ordinateurs/Poste de travail/Application COM+» (Note : Poste de travail peut-être aussi le nom d'un serveur distinct).

Pour se faire, on clique sur le deuxième bouton de la souris sur l'identifiant «Application COM+». On choisit dans ce menu «Nouveau > Application». Ensuite on suit les étapes suivantes:

Ajout des composants DLLIl faut également ajouter dans le projet la liste des DLLs à exploiter pour le projet de votre choix. Pour se faire, on va sur le sous-répertoire «Composant» de répertoire de votre projet et on appuie sur le deuxième bouton de la souris afin de pouvoir sélectionner l'option «Nouveau > Composant».

Développement

Développement des bibliothèques sous Visual Basic : Lors du développement d'une bibliothèque à l'aide de l'outil de programmation Visual Basic, on ne peut malheureusement pas simplement écrire le code et l'exécuter comme on le ferait d'habitude pour un projet classique. On doit tenir compte de plusieurs éléments :

Création de la bibliothèque : La création de la bibliothèque sous forme d'une DLL se fera à l'aide du menu Fichier, avec l'option Crée [...]. En somme, on obtiendra à l'aide de cette option le résultat final de notre bibliothèque.

ATTENTION ! Si vous rencontrez un problème de «Permission refuser» lors de cette opération, il peut s'agir principalement des trois problèmes suivants :

La bibliothèque de données: Dans ce DLL, on retrouve différentes classes construites de façon relativement primaire. On constatera donc, la présence de fonction comme Load, Insert, Update et Delete. Ceux-ci permettent d'effectuer les différentes mise-à-jour nécessaire ou simplement consulter de l'information. Aucune connaissance n'est retenu à se niveau. De se fait, après avoir appelé une fonction d'une de ces classes, il n'y a aucun souvenir de garder par l'ordinateur à se niveau.

On retrouvera en plus des noms comme «GetCandidat» ou «GetTypeEmployee» permettant de retourner différentes informations d'une autre table mais ayant une dépendance avec celle-ci.

ATTENTION : Dans les propriétés de démarrage, bien définir l'objet Sub Main.

La structure de programmation d'une fonction effectuant une requête SQL devrait avoir l'aspect suivant sous le Visual Basic :

Public Function fonction(paramètres) As ADODB.Recordset
    Dim sSql As String
    sSql = "requête"
    Set fonction = OpenRecordSet(sSql)
End Function

La bibliothèque Affaire : Dans se DLL, on retrouve tout le traitement de façon concret de la donnée. Dans cette couche, on retrouve les validations comme pour un code postal n'ayant pas les bons formats, un numéro de téléphone ressemblant à un numéro de 6/49 par exemple. En somme, toutes informations incohérentes est testé dans les classes dans une procédure portant le nom «Validate». On a donc, vous le comprendrez, des variables locales pour la classes, permettant de mémoriser le contenu d'un enregistrement d'un table. Pour, par exemple, éventuellement sauvegarder ses mêmes informations ou simplement effectué une mise-à-jour.

Note de bug Visual Basic : Il arrive parfois qu'il ne retrouve plus la classe de votre bibliothèque de données et dans ce cas, on va dans le menu «Projet» dans l'item «Référence» on décoche la classe. Et on le ferme comme ça, ensuite on repasse par le même chemin et on clique sur votre bibliothèque de données.

L'ASP: Dans cette zone, vous ne trouverez rien d'autre que des pages envoyées à des clients sur leurs navigateurs Internet (d'où le nom Client/Serveur) et ainsi, toutes les informations contenu entre les symboles «<%» et «%>» est interprétés par le serveur avant d'être envoyé au navigateur en ayant fait la demande. Tout le reste n'a aucune interprétation avant d'être envoyé au client.

Le code

Voici maintenant un exemple de ce à quoi ressemble les trois niveaux de codes. Tous d'abord la partie données :

  1. ' Cette classe permet de gérer une des données au niveau de la base de données.
  2.  
  3. Option Explicit
  4.  
  5. Public ConnectionString As String
  6. Public Cnx As ADODB.Connection
  7.  
  8. ' ////////////////////////////////////////////////////////////////////
  9. ' OpenRecordSet
  10. ' Cette fonction retourne un «RecordSet» déconnecté
  11. ' ////////////////////////////////////////////////////////////////////
  12. Public Function OpenRecordSet(ByVal sSql As String) As ADODB.Recordset
  13.     Dim oRs As New ADODB.Recordset
  14.     oRs.CursorLocation = adUseClient
  15.     oRs.Open sSql, IIf(Cnx Is Nothing, ConnectionString, Cnx), adOpenForwardOnly, adLockReadOnly
  16.     Set oRs.ActiveConnection = Nothing
  17.     Set OpenRecordSet = oRs
  18.     Set oRs = Nothing
  19. End Function
  20.  
  21. ' ********************************************************************
  22. ' ExecuteSQL
  23. ' Permet d'exécuter une requête SQL
  24. ' ********************************************************************
  25. Public Sub ExecuteSQL(ByVal sSql As String)
  26.     If Cnx Is Nothing Then
  27.         Set Cnx = New ADODB.Connection
  28.         Cnx.Open ConnectionString
  29.         Cnx.Execute sSql
  30.         Cnx.Close
  31.         Set Cnx = Nothing
  32.     Else
  33.         Cnx.Execute sSql
  34.     End If
  35. End Sub
  36.  
  37. ' ********************************************************************
  38. ' SqlString
  39. ' Cette fonction ajoute les apostrophes pour être compatible SQL.
  40. ' **********************************************************************
  41. Public Function SqlString(ByVal sString As String) As String
  42.     If sString = Empty Then
  43.         SqlString = "NULL"
  44.     Else
  45.         SqlString = "'" & Replace(sString, "'", "''") & "'"
  46.     End If
  47. End Function
  48.  
  49. ' ******************************************************************************
  50. ' Cette fonction retourne un identificateur unique d'enregistrement
  51. ' ******************************************************************************
  52. Public Function GenerateNewID(ByVal FieldName As String, ByVal TableName As String) As Long
  53.     Dim oRs As ADODB.Recordset
  54.     Dim sSql As String
  55.     sSql = "SELECT MAX(" & FieldName & ") AS MaxNo FROM " & TableName
  56.     Set oRs = OpenRecordSet(sSql)
  57.     GenerateNewID = (oRs!MaxNo) + 1
  58.     oRs.Close
  59.     Set oRs = Nothing
  60. End Function
  61.  
  62. ' ******************************************************************************
  63. ' getEntreprise
  64. ' Charge les entreprises dans un recordset
  65. ' ******************************************************************************
  66. Public Function getEntreprise() As ADODB.Recordset
  67.     Dim sSql As String
  68.     sSql = "SELECT * FROM vosentreprises ORDER BY NomEntreprise"
  69.     Set getCompagnie = OpenRecordSet(sSql)
  70. End Function
  71.  
  72. ' ******************************************************************************
  73. ' Load
  74. ' Charge l'entreprise dans un recordset
  75. ' ******************************************************************************
  76. Public Function Load(ByVal lID As Long) As ADODB.Recordset
  77.     Dim sSql As String
  78.     sSql = "SELECT * FROM vosentreprises " & _
  79.            " ORDER BY NomTypeEntreprise" & _
  80.            " FROM TypeEntreprise" & _
  81.            " WHERE ID = " & lID
  82.     Set Load = OpenRecordSet(sSql)
  83. End Function
  84.  
  85. ' ******************************************************************************
  86. ' Insert
  87. ' Insertion d'un enregistrement dans la base de données
  88. ' ******************************************************************************
  89. Public Sub Insert(ByRef NoTypeEntreprise As Long, _
  90.                   ByVal NomTypeEntreprise As String)
  91.     Dim sSql As String
  92.     NoTypeEntreprise = GenerateNewID("NoEntreprise", "TypeEntreprise")
  93.     sSql = "INSERT INTO TypeEntreprise" & _
  94.                " (NoTypeEntreprise, NomTypeEntreprise" & _
  95.                ") VALUES (" & _
  96.                NoTypeEntreprise & _
  97.                "," & SqlString(NomTypeEntreprise) & ")"
  98.     ExecuteSQL sSql
  99. End Sub
  100.  
  101. ' ******************************************************************************
  102. ' Update
  103. ' Mise à jour de l'enregistrement dans la base de données
  104. ' ******************************************************************************
  105. Public Sub Update(ByVal NoTypeEntreprise As Long, _
  106.                   ByVal NomTypeEntreprise As String)
  107.     Dim sSql As String
  108.     sSql = "UPDATE TypeEntreprise SET" & _
  109.            " NomTypeEntreprise = " & SqlString(NomTypeEntreprise) & _
  110.            " WHERE NoTypeEntreprise = " & NoTypeEntreprise
  111.     ExecuteSQL sSql
  112. End Sub
  113.  
  114. ' ******************************************************************************
  115. ' Delete
  116. ' Supprime l'entreprise de la base de données
  117. ' ******************************************************************************
  118. Public Sub Delete(ByVal Code As Long)
  119.     Dim sSql As String
  120.     sSql = "DELETE FROM TypeEntreprise" & _
  121.           " WHERE NoTypeEntreprise = " & Code
  122.     ExecuteSQL sSql
  123. End Sub

Voici le code de la bibliothèque d'affaire faisant appel à la classe de la bibliothèque de données :

  1. ' Cette classe permet d'offrir différent service à propos d'une entreprise.
  2.  
  3. Option Explicit
  4.  
  5. Public NoTypeEntreprise As Long
  6. Public NomEntreprise As String
  7.  
  8. ' ******************************************************************************
  9. ' Load
  10. ' Charge la entreprise dans les variables de l'objet
  11. ' ******************************************************************************
  12. Public Sub Load(ByVal lID As Long)
  13.     Dim oEntrepriseDB As New projet_DB.Entreprise
  14.     Dim oRs As ADODB.Recordset
  15.     Set oRs = oEntrepriseDB.Load(lID)
  16.     If oRs.EOF Then
  17.         NoTypeEntreprise = 0
  18.         NomEntreprise = ""
  19.     Else
  20.         NoTypeEntreprise = oRs!NoTypeEntreprise
  21.         NomEntreprise = oRs!NomTypeEntreprise
  22.     End If
  23.     oRs.Close
  24.     Set oRs = Nothing
  25.     Set oEntrepriseDB = Nothing
  26. End Sub
  27.  
  28. ' ******************************************************************************
  29. ' Insert
  30. ' Insertion d'un enregistrement dans la base de données
  31. ' ******************************************************************************
  32. Public Sub Insert()
  33.     Dim oEntrepriseDB As New projet_DB.Entreprise
  34.     Validate
  35.     oEntrepriseDB.Insert NoTypeEntreprise, _
  36.                         NomEntreprise
  37.     Set oEntrepriseDB = Nothing
  38. End Sub
  39.  
  40. ' ******************************************************************************
  41. ' Update
  42. ' Mise à jour de l'enregistrement dans la base de données
  43. ' ******************************************************************************
  44. Public Sub Update()
  45.     Dim oEntrepriseDB As New projet_DB.Entreprise
  46.     Validate
  47.     oEntrepriseDB.Update NoTypeEntreprise, _
  48.                         NomEntreprise
  49.     Set oEntrepriseDB = Nothing
  50. End Sub
  51.  
  52. ' ******************************************************************************
  53. ' Delete
  54. ' Supprime l'entreprise de la base de données
  55. ' ******************************************************************************
  56. Public Sub Delete()
  57.    Dim oEntrepriseDB As New projet_DB.Entreprise
  58.     oEntrepriseDB.Delete NoTypeEntreprise
  59.     Set oEntrepriseDB = Nothing
  60. End Sub
  61.  
  62. ' ******************************************************************************
  63. ' Validate
  64. ' Effectue les validations d'affaires avant la mise à jour de l'enregistrement
  65. ' ******************************************************************************
  66. Private Sub Validate()
  67.     If DescriptionF = Empty Then
  68.         Err.Raise vbObjectError, "Type d'Entreprise", "ERR_DESC_TYPE_ENTREPRISE_F_REQUISE"
  69.     End If
  70. End Sub

Voici finalement la partie interface écrite en ASP :

  1. <%
  2. Set oEntreprise = server.CreateObject("projet_Bus.Entreprise")
  3. oEntreprise.Load Request("ID")
  4. Response.Write oEntreprise.NomEntreprise
  5. %>


PARTAGER CETTE PAGE SUR
Dernière mise à jour : Vendredi, le 13 janvier 2012