Guide de la connexion entre VB.
net et Microsoft Access 2003
Introduction :
Visual [Link] apporte une puissance inégalée et nécessite une rigueur
importante mais il devient vite complexe et technique. La documentation et les
livres sont totalement hermétiques pour les novices et rebutent totalement les
débutants. Les articles sur le Web sont très techniques et traitent d'emblée de
problèmes complexes, ils sont nécessaires mais pas pour le débutant. J’explique
donc dans ce petit guide, à ma manière, très simplement, comment créer un
programme [Link] en le connectant à MS Access afin de permettre un bon
démarrage même à celui qui ne l’a jamais fait.
Ms Access :
Avant de pouvoir utiliser une base de donnée créer en Access dans [Link]
en utilisant l’IDE Visual studio, nous dévons d’abord être en mesure de créer la
base, donc la base de donnée (tables, requêtes) dans Access. C’est après la
création de cette dernière que nous pouvons être en mesure de la connecté en
[Link] en utilisant l’objet OLEDB.
Création de la table :
Pour créer une table en Access, nous ouvrons Ms Access avec un clic de la
souris, et nous avons cette fenêtre ci-dessous
Et puis juste à droite nous y voyons là où on écrit « créer un nouveau fichier » et
c’est à partir de là que nous allons créer notre base de donnée. Nous complétons
le nom de notre nouvelle base de donnée, puis nous parcourons le répertoire ou
sera stocké notre base de donnée.
Copyright Adostum66 [Link]
N.B : il faut très bien retenir le répertoire qui stockera le nom de notre base de
données. Dans notre exemple le nom de la base de donnée est « Masivi » son
répertoire est « C:alimasi/[Link] »
Et puis nous allons y enregistrer notre base de données. Créons maintenant
notre table que nous la renommerons « etudiant » avec 4 champs :-nom, post
nom, sexe, âge.
Après la création de notre base de données, vient maintenant le bon moment de
sa connexion dans Visual studio en utilisant [Link]
Ouvrons Visual studio et choisissons le langage [Link] en cliquant sur :
Copyright Adostum66 [Link]
-file(Fichier)
-New(Nouveau)
-Project (projet) et voilà que la fenêtre ci-dessous apparaitra
Puis Nous choisirons Visual basic et puis Windows forms application (pour la
création d’une application graphique) et dans notre exemple nous renommerons
le projet « Goma »
Et après cliquons sur le bouton Ok, puis voici notre nouvelle interface du travail
Copyright Adostum66 [Link]
Doublons cliquons sur notre fenêtre pour enfin créer notre connexion.
Pour avoir accès aux données il faut charger les DRIVERS (ou providers).
Comme d'habitude, il faut:
-Charger les références des drivers (les Dll)
-Importer les espaces de nom.
Ainsi on a accès aux objets [Link] correspondant. Voyons cela:
-OLE DB Managed Provider est fourni dans 'System'; après avoir importé le
NameSpace [Link], on peut travailler sur des bases Access par
exemple.
-SQL Server Managed Provider est fourni dans 'System'; après avoir importé le
NameSpace [Link], on peut travailler sur des bases SqlServeur.
-Un composant ODBC et un composant ORACLE sont disponible sur le site
MSDN, il faudra charger la référence de la Dll puis le NameSpace.
Exemple, pour travailler sur une base Access, il faudra taper:
Imports [Link] et c’est celui-ci que nous allons l’utiliser dans
notre exemple. Donc avant notre public classe form1 au-dessus nous écrirons
Imports [Link] comme c’est lui le driver que nous avons besoin.
Il faut disposer d'un objet Connexion pour avoir accès à la base de données, on
met dans la propriété
Copyright Adostum66 [Link]
ConnectionString les paramètres de la base de données (nom de la base de
données, chemin, mot de passe..).
Déclarons objet qui contiendra la connexion et comme nous utilisons le driver
OLEDB, nous allons le déclarer en utilisant OleDbConnection
Dim con As New OleDbConnection, voila la variable de notre connexion
Puis après tout ceci nous aurons bésoin d’un datadaptateur et d’un dataset. Le
DataSet peut lire et écrire des données dans la BD, il faut un DataAdapter en
plus de la connexion.
Le DataSet a la structure d'une base de données mais en local; il contient: Des
DataTable qui contiennent des DataRow et des DataColumn. Pour utiliser
DataSet, DataTable, DataRow. Il faut importer l'espace de nom Data : donc nous
allons aussi au-dessus de notre classe écrire
Imports [Link]
Pour enfin avoir ces lignes dees codes :
Imports [Link]
Imports [Link]
Public Class Form1
Dim con As New OleDbConnection
Dim forest As String(pour contenir notre instruction sql)
Dim ds As New DataSet
Dim da As OleDbDataAdapter
Dim maxrows, x As Integer(maxrows pour contenir les nombres totals de nos
lignes, et la variable x contenir une ligne)
Private Sub Form1_Load(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = ("Provider=[Link].4.0;Data
source=C:/alimasi/[Link]")
[Link]()
forest = "select * from etudiant"
da = New [Link](forest, con)
[Link](ds, "masivi")
[Link]()
maxrows = [Link]("masivi").[Link]
x=0
Copyright Adostum66 [Link]
osee()
End Sub
Pour afficher les données de notre BD pendant le lancement de notre
application, créons une procédure et affectons les données de nos tables aux
zones de textes
Private Sub osee()
'fonction pour affectation données dans nos zones de textes
[Link] = [Link]("masivi").Rows(x).Item(0)
[Link] = [Link]("masivi").Rows(x).Item(1)
[Link] = [Link]("masivi").Rows(x).Item(3)
If [Link]("masivi").Rows(x).Item(2) = "M" Then
[Link] = True
Else
[Link] = True
End If
End Sub
Et voici le code au complet
Imports [Link]
Imports [Link]
Public Class Form1
Dim con As New OleDbConnection
Dim forest As String
Dim ds As New DataSet
Dim da As OleDbDataAdapter
Dim maxrows, x As Integer
Private Sub Form1_Load(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
'declaration de la variable de la connexion
[Link] = ("Provider=[Link].4.0;Data
source=C:/alimasi/[Link]")
'ouverture de la connexion
[Link]()
'selections des données
forest = "select * from etudiant"
'mettre les données dans le dataadaptateur
Copyright Adostum66 [Link]
da = New [Link](forest, con)
'creation d'un lien entre la bd et le dataset
[Link](ds, "masivi")
'fermeture de la connexion
[Link]()
'selection de toute nos lignes
maxrows = [Link]("masivi").[Link]
'initialisation de nos lignes
x=0
'appel de notre procedure pour afficher les données
osee()
End Sub
Private Sub osee()
'fonction pour affectation données dans nos zones de textes
[Link] = [Link]("masivi").Rows(x).Item(0)
[Link] = [Link]("masivi").Rows(x).Item(1)
[Link] = [Link]("masivi").Rows(x).Item(3)
If [Link]("masivi").Rows(x).Item(2) = "M" Then
[Link] = True
Else
[Link] = True
End If
End Sub
End Class
INSTRUCTIONS SQL :
Passons maintenant en revue des instructions que nous utiliserons :
ENREGISTREMENT DES DONNES : pour enregistres, nous allons cliquer
sur notre bouton qui s’occupera de l’enregistrement pour y mettre nos codes
pour introduire les donnes à partir du formulaire, mais avant d’enregistrer les
données nous dévons rendre toute les zones à vide.
Nous aurons d’abord à initialiser les zones des textes. Cliquons sur le bouton
nouveau et mettons y ce code, donc affectons aux zones de text des vides.
'initialisation des zones de textes
[Link] = ""
[Link] = ""
[Link] = ""
[Link] = False
Copyright Adostum66 [Link]
[Link] =False
Puis mettons maintenant dans le bouton enregistrer les codes qui nous aiderons à
enregistrer les données.
Try
' verification s'il n'ya pas des champs vide
If [Link] = "" Or [Link] = "" Or [Link] = "" Then
MsgBox("verifiez les champs vide")
Else
' ouverture de la connexion
[Link]()
'declarons un object command qui va modifier la base de donnee
Dim ajouter As New OleDbCommand
'code sql pour l'enregistrement des donnes
[Link] = "insert into etudiant values ('" & [Link] & "
','" & [Link] & "','" & m & "' ,'" & [Link] & "')"
[Link] = con
[Link] = [Link]
[Link]()
MsgBox("L'enregistrement a été ajouté avec succés")
[Link]()
End If
Catch ex As Exception
MsgBox("Erreur System")
End Try
SUPPRESSION DES DONNES : à l’aide toujours de notre objet command en
complementarité avec l’instruction sql de la suppression, ajoutons du code dans
le bouton delete.
'ouverture de la connexion
[Link]()
'declaration de la commande
Dim delete As New OleDbCommand
'declaration d'une variable qui contiendra notre inputbox
Dim k As String
k = InputBox("Entrez le Numero de l'etudiant a supprimer")
If k <> "" Then
[Link] = "delete from etudiant where Nom='" & k & "'"
[Link] = con
Copyright Adostum66 [Link]
[Link] = [Link]
[Link]()
MsgBox("Un etudiant a ete supprimer")
Else
MsgBox("Rien a supprimer")
End If
[Link]()
Rechercher des donnes : en utilisant l’objet command avec l’instruction select
avec une clause, créons le bouton rechercher
N.B : Un objet DataReader fournit des données en lecture seule en un temps
record. La seule possibilité est de se déplacer en avant. Il faut créer un objet
Connexion puis un objet Command, ensuite on exécute la propriété
ExecuteReader pour créer l'objet DataReader; enfin on parcourt les
enregistrements avec la méthode Read. Et c’est cet objet que nous allons
l’utiliser ici
'ouverture de notre connexion
[Link]()
'declaration d'un string pour contenir notre inputbox et d'un objet command
Dim rechercher As New OleDbCommand
Dim p As String
p = InputBox("Entrez le nom de l'etudiant ")
[Link] = "select * from etudiant where Nom='" & p & "'"
[Link] = con
'declaration d'un objet datareader qui nous permettra de lire les donnes de la bd
Dim dbreader As OleDbDataReader = [Link]
If [Link] = True Then
[Link] = [Link](0)
[Link] = [Link](1)
If [Link](2) = "M" Then
[Link] = True
Else
[Link] = True
End If
Copyright Adostum66 [Link]
[Link] = [Link](3)
End If
[Link]()
Parcourt de la Base de données
Défiler les données : pour défiler les données nous aurons à faire à 4 choses :
Défiler avec le suivant, précèdent, premier, dernier.
Suivant enregistrement:
If x < maxrows - 1 Then
x=x+1
'notre procedure
osee()
Else
MsgBox("Vous êtes au dernier enregistrement")
End If
Précèdent enregistrement:
If x > 0 Then
x=x-1
'notre procedure
osee()
Else
MsgBox("Vous êtes au premier enregistrement")
End If
Dernier Enregistrement :
If x <> maxrows - 1 Then
x = maxrows - 1
Copyright Adostum66 [Link]
osee()
Else
MsgBox("Vous etes deja au dernier enregistrement")
End If
Premier enregistrement :
If x <> 0 Then
x=0
osee()
Else
MsgBox("Vous etes deja au premier enregistrement")
End If
CREATION DE CRYSTALL REPORT :
Le crystall report qui nous aidera à visualiser nos données dans le but des les
imprimés par exemple. Pour y arrivé nous dévons d’abord créer un formulaires
qui nous aidera à afficher nos états.
1) Ajout du formulaire : allons sur le menus Projet, puis add new windows
forms(ajout de la nouvelle fenetre), puis baptisons le au nom « etat »
Copyright Adostum66 [Link]
Puis cliquons sur le bouton add.
2. ouvrons le design de notre formulaire que nous vénons de créer.
3. ajoutons sur notre formularire un contrôle de la boite d’outils dans la partie
Reporting qui s’appel « CrystalReportViewer »
4. créons maintenant notre crystalreport, en cliquant sur le menus, projetc, new
windows form, puis sous menus reporting, et selectionnons Crystal Report
Copyright Adostum66 [Link]
Après quelques secondes une nouvelle fenetre apparait cliquons sur ok sans rien
changer.
Une nouvelle fenetre apparait qui nous obligera à selectionner la source de notre
base de donnée.
Copyright Adostum66 [Link]
Cliquons sur create new connection, puis OLEDB(ADO), et une fenetre comme
celle-ci apparaitra.
Copyright Adostum66 [Link]
Selectionnons Microsoft Jet 4.0 OLEDB Provider, car c’est lui notre
provider(cfr le driver pour la connexion)puis cliquons sur next. Selectionnons
notre base de donnée qui se trouve dans «C:/alimasi/[Link] » , puis
cliquons sans rien changé sur suivant et puis disons finish. Et voila notre
nouvelle interface :
Selectionnons notre base de donnée etudiant, et avec le bouton selecteur,
amenons le de l’autre coté pour avoir ceci enfin
Copyright Adostum66 [Link]
Puis faisons un next,selectionnons tout les champs, puis encore next, on peut
grouper selon le sexe,puis next encore,ramenons dans le cote droit le champs
age qui veut qu’on calcul sa somme comme il est du type numerique,puis
faisons next,puis finish et nous devons avoir ceci :
En allant sur Main report Preview vous devez etre sur cet écran ci-dessus
Après ces étapes,ajoutons maintenant un bouton « afficher les données »sur
notre formulaire, et voici ce qu’on doit avoir après :
Copyright Adostum66 [Link]
Et puis cliquons sur le bouton « afficher état » pour écrire nos codes de la
visualisation de notre report.
Try
'declaration de notre objet string qui contiendra notre instruction sql
Dim contenu As String
'initialisation de l'objet
contenu = ""
'instanciation de notre formulaire etat
Dim frm As New etat
'declaration de notre connexion
[Link] = ("Provider=[Link].4.0;Data
source=C:/alimasi/[Link]")
'declaration d'un objet dataset
Dim donnees As New DataSet
[Link]()
'ouverture de la connexion
[Link]()
'remplissage de notre variable avec l'instruction sql
'et c'est ici qu'on peut appliquer un where si on a pas envie de
selectionner
'tout les donnes
contenu = "SELECT * from etudiant"
'declaration d'un objet dataadaptateur
Dim adaptateur As OleDbDataAdapter
adaptateur = New [Link](contenu, con)
Copyright Adostum66 [Link]
[Link](donnees, "masivi")
'fermeture de la connexion
[Link]()
'instanciation de notre crystalreports
Dim objRpt As New CrystalReport1
[Link]([Link](0))
[Link] = objRpt
[Link]()
[Link]()
'affichage de notre crystallreport
[Link]()
Catch ex As Exception
MsgBox("erreur")
End Try
Executons enfin notre formulaire et vous verez que notre état sera visible.
Voici les codes au complet
Imports [Link]
Imports [Link]
Public Class Form1
Dim con As New OleDbConnection
Dim forest As String
Dim ds As New DataSet
Dim da As OleDbDataAdapter
'variable pour contenir le sexe Masculin et feminin
Dim m As String
Dim maxrows, x As Integer
Private Sub Form1_Load(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
'declaration de la variable de la connexion
[Link] = ("Provider=[Link].4.0;Data
source=C:/alimasi/[Link]")
'ouverture de la connexion
[Link]()
'selections des données
forest = "select * from etudiant"
'mettre les données dans le dataadaptateur
da = New [Link](forest, con)
'creation d'un lien entre la bd et le dataset
[Link](ds, "masivi")
Copyright Adostum66 [Link]
'fermeture de la connexion
[Link]()
'selection de toute nos lignes
maxrows = [Link]("masivi").[Link]
'initialisation de nos lignes
x=0
'appel de notre procedure pour afficher les données
osee()
End Sub
Private Sub osee()
'fonction pour affectation données dans nos zones de textes
[Link] = [Link]("masivi").Rows(x).Item(0)
[Link] = [Link]("masivi").Rows(x).Item(1)
[Link] = [Link]("masivi").Rows(x).Item(3)
If [Link]("masivi").Rows(x).Item(2) = "M" Then
[Link] = True
Else
[Link] = True
End If
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
' verification s'il n'ya pas des champs vide
Try
If [Link] = "" Or [Link] = "" Or [Link] = ""
Then
MsgBox("verifiez les champs vide")
Else
' ouverture de la connexion
[Link]()
'declarons un object command qui va modifier la base de donnee
Dim ajouter As New OleDbCommand
'code sql pour l'enregistrement des donnes
[Link] = "insert into etudiant values ('" &
[Link] & "','" & [Link] & "','" & m & "' ,'" & [Link] &
"')"
[Link] = con
[Link] = [Link]
[Link]()
MsgBox("L'enregistrement a été ajouté avec succés")
Copyright Adostum66 [Link]
[Link]()
End If
Catch ex As Exception
MsgBox("Erreur System")
End Try
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As
[Link], ByVal e As [Link]) Handles
[Link]
m = "M"
End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As
[Link], ByVal e As [Link]) Handles
[Link]
m = "F"
End Sub
Private Sub Button8_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
'initialisation des zones de textes
[Link] = ""
[Link] = ""
[Link] = ""
[Link] = False
[Link] = False
End Sub
Private Sub Button2_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
'ouverture de la connexion
[Link]()
'declaration de la commande
Dim delete As New OleDbCommand
'declaration d'une variable qui contiendra notre inputbox
Dim k As String
k = InputBox("Entrez le Numero de l'etudiant a supprimer")
If k <> "" Then
[Link] = "delete from etudiant where Nom='" & k & "'"
[Link] = con
Copyright Adostum66 [Link]
[Link] = [Link]
[Link]()
MsgBox("Un etudiant a ete supprimer")
Else
MsgBox("Rien a supprimer")
End If
[Link]()
End Sub
Private Sub Button3_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
'ouverture de notre connexion
[Link]()
'declaration d'un string pour contenir notre inputbox et d'un objet command
Dim rechercher As New OleDbCommand
Dim p As String
p = InputBox("Entrez le nom de l'etudiant ")
[Link] = "select * from etudiant where Nom='" & p &
"'"
[Link] = con
'declaration d'un objet datareader qui nous permettra de lire les donnes de la
bd
Dim dbreader As OleDbDataReader = [Link]
If [Link] = True Then
[Link] = [Link](0)
[Link] = [Link](1)
If [Link](2) = "M" Then
[Link] = True
Else
[Link] = True
End If
[Link] = [Link](3)
End If
[Link]()
End Sub
Private Sub Button4_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
If x <> 0 Then
x=0
osee()
Copyright Adostum66 [Link]
Else
MsgBox("Vous etes deja au premier enregistrement")
End If
End Sub
Private Sub Button6_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
If x < maxrows - 1 Then
x=x+1
'notre procedure
osee()
Else
MsgBox("Vous êtes au dernier enregistrement")
End If
End Sub
Private Sub Button7_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
If x > 0 Then
x=x-1
'notre procedure
osee()
Else
MsgBox("Vous êtes au premier enregistrement")
End If
End Sub
Private Sub Button5_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
If x <> maxrows - 1 Then
x = maxrows - 1
osee()
Else
MsgBox("Vous etes deja au dernier enregistrement")
End If
End Sub
Private Sub Button9_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
Try
'declaration de notre objet string qui contiendra notre instruction sql
Copyright Adostum66 [Link]
Dim contenu As String
'initialisation de l'objet
contenu = ""
'instanciation de notre formulaire etat
Dim frm As New etat
'declaration de notre connexion
[Link] = ("Provider=[Link].4.0;Data
source=C:/alimasi/[Link]")
'declaration d'un objet dataset
Dim donnees As New DataSet
[Link]()
'ouverture de la connexion
[Link]()
'remplissage de notre variable avec l'instruction sql
'et c'est ici qu'on peut appliquer un where si on a pas envie de
selectionner
'tout les donnes
contenu = "SELECT * from etudiant"
'declaration d'un objet dataadaptateur
Dim adaptateur As OleDbDataAdapter
adaptateur = New [Link](contenu, con)
[Link](donnees, "masivi")
'fermeture de la connexion
[Link]()
'instanciation de notre crystalreports
Dim objRpt As New CrystalReport1
[Link]([Link](0))
[Link] = objRpt
[Link]()
[Link]()
'affichage de notre crystallreport
[Link]()
Catch ex As Exception
MsgBox("erreur")
End Try
End Sub
End Class
Copyright Adostum66 [Link]