Les bases pour se connecter une base de données access avec vb.net

Les bases pour se connecter une base de données Access avec Vb.net

Introduction

Bonjour,

Ce tutoriel explique les syntaxes pour se connecter à une BD Access, ajouter , modifier et supprimer des données... C'est une version simplifiée de ma source (faite grâce à un trés bon tuto) qui ,suite aux mises à jours, est devenue moins compréhensible pour les débutants, à qui elle était adressée au départ...

Les bibliothèques

Il faut importer les biblio qui vont permettre d'utiliser ado.net : ( à mettre tout en haut )


Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic

Déclaration des variables

Il faut déclarer les variables : (au dessus de form_load)


'Déclaration de la variable pour la connection
Private cnx As OleDbConnection
'Déclaration de la variable pour la commande
PrivatecmdAs OleDbCommand
'Déclaration de la variable pour le dataadapter
Privatedta As OleDbDataAdapter
'Déclaration de la variable pour le dataset
PrivatedtsAs New Dataset
'Déclaration de la variable pour la requête
Private sql As String
'Déclaration de la variable pour la datatable
Private dtt As DataTable
'Déclaration de la variable pour le datarow
Private dtr As DataRow
'Déclaration de la variable pour le Nº de l'enregistrement
Private rownum As Integer
'Déclaration de la variable pour la connectionstring
Private cnxstr AsString
'Déclaration de la variable pour le commandbuilder
Private cmdb As OleDbCommandBuilder

Command (cmd) : permet par le biais d'une requête de récupérer tout ou partie des données de la table.

Dataadapter (dta) : reçoit les données de la commande (cmd) et les envoies au dataset (dts)

Datatable (dtt) : le dataset renvoie les données dans la datatable , qui va permettre de récupérer le nº d'enregistrement sur lequel on est placé grâce au Nº de ligne (rownum)

Commandbuilder (cmdb) : il va récupérer les données modifiées et les renvoyer au dataadapter pour recréer le dataset avec les nouvelles données

Form_Load

Dans form_load on va créer la connection , la commande , le dataadapter , le dataset et la datatable afin de pouvoir ajouter , modifier , supprimer des données dans la table.

Afin de ne pas devoir déplacer la base de données on la place dans le répertoire bin du projet et on déclare la connection à la BD de cette façon :


'ouverture de la connection (à partir du répertoire de l'application) sur la même ligne
cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
'Création de la requête sql
sql = "select table.* from table"
'Création de la commande et on l'instancie (sql)
cmd = NewOleDbCommand(sql)
'Création du dataadapter (dta) et on l'instancie (cmd)
dta = New OleDbDataAdapter(cmd)
'On instancie la commande (cmd) à la connection (cnx)
cmd.Connection() = cnx
'On charge le dataset (dts) grâce à la propriété fill du dataadapter (dta)
dta.Fill(dts, "table")
'On charge la datatable (dtt) grâce à la propriété tables du dataset (dts)
dtt = dts.Tables("table")
'

Remarque :
Concernant la requête sql : Select table.* from table, Table est le nom de la table et " table.* " signifie sélectionner tous les champs de la table

Sélection et affichage des données

Pour pouvoir sélectionner et afficher des données on va se servir de la variable rownum qui va contenir le Nº de ligne (ou d'enregistrement) sur lequel nous serons placés dans la datatable (dtt) et que ces lignes vont de 0 (premier enregistrement) à rows.count - 1 (dernier enregistrement).

Pour afficher un enregistrement , dans des textbox , on utilisera la syntaxe suivante :

'
Me.txt1.text = dtt.Rows (rownum).Item("champ1")
Me.txt2.text = dtt.Rows (rownum).Item("champ2")

Pour se déplacer dans les enregistrements , on utilisera les syntaxes suivantes suivies de la syntaxe d'affichage données :

Premier : rownum = 0
Précédent : rownum -= 1
Suivant : rownum += 1
Dernier : dtt.Rows.Count - 1

Pour vérifier si la table contient des enregistrements on utilisera cette syntaxe :


'si la table est vide alors
If rownum > dtt.Rows.Count - 1 Then
'

Remarque : Dans chaque bouton de navigation, il faudra utiliser une condition pour afficher les données, car si l'on clique sur le bouton suivant et que l'on est sur le dernier enregistrement cela génèrera une erreur.

Exemple pour le bouton précédent :

'
'si début du fichier ou table vide message et sortie de procédure
If rownum = 0 Orrownum > dtt.Rows.Count - 1 Then
MessageBox.Show etc....
Exit Sub
Else
'aller à la ligne précédente
rownum -= 1
'affichage des données dans les textbox
Me.txt1.text = dtt.Rows (rownum).Item("champ1")
Me.txt2.text = dtt.Rows (rownum).Item("champ2")
End if

Affichage du premier enregistrement

On va donc afficher le premier enregistrement, si la table n'est pas vide, en plaçant ce code dans le form_load :


'si la table est vide alors
If rownum > dtt.Rows.Count - 1 Then
'Sortie de procédure
Exit sub
'Sinon affichage des données dans les textbox
Else
Me.txt1.text = dtt.Rows (rownum).Item("champ1")
Me.txt2.text = dtt.Rows (rownum).Item("champ2")
End If

Ajouter un enregistrement

Pour ajouter un enregistrement on utilisera cette syntaxe :


'création d'une nouvelle ligne avec les données des textbox
dtr = dts.Tables("table").NewRow
dtr("champ1") = Me.txt1.Text
dtr("champ2") = Me.txt2.Text
'ajout de la ligne dans le DataSet
dts.Tables("table").Rows.Add(dtr)
'création et exécution du commandbuilder pour mettre à jour le DataAdapter
cmdb = NewOleDbCommandBuilder(dta)
'mise à jour des données du dataadapter (dta) à partir du commandbuilder (cmdb)
dta.Update(dts, "table")
'on vide le dataset pour le recréer avec les nouvelles données
dts.Clear()
dta.Fill(dts, "table")
dtt = dts.Tables("table")

Modifier un enregistrement

Pour modifier un enregistrement on utilisera cette syntaxe :


'récupération de la ligne sur laquel on est placés dans le datarow
dtr = dts.Tables("table").Rows(rownum)
'modification des données
dtr("champ1") = Me.txt1.Text
dtr("champ2") = Me.txt2.Text
'création et exécution du commandbuilder pour mettre à jour le DataAdapter
cmdb = NewOleDbCommandBuilder(dta)
'mise à jour des données du DataAdapter à partir du commandbuilder
dta.Update(dts, "table")
'on vide le dataset pour le recréer avec les nouvelles données
dts.Clear()
dta.Fill(dts, "table")
dtt = dts.Tables("table")

Supprimer un enregistrement

Pour supprimer un enregistrement on utilisera la syntaxe suivante:


'suppression de la ligne en cours
dts.Tables("table").Rows(rownum).Delete()
'création et exécution du commandbuilder pour mettre à jour le DataAdapter
cmdb = New OleDbCommandBuilder(dta)
'mise à jour des données du DataAdapter à partir du commandbuilder
dta.Update(dts, "table")

Fermeture

Pour fermer les objets et les connections on utilisera ces syntaxes :


cnx = Nothing
dts = Nothing

Conclusion

Il ne vous reste plus qu'a gérer l'activation et la désactivation des boutons dans chaque procédure et autres finitions(null , msgbox ,etc...)

Pour ceux qui souhaiteraient inclure une recherche vous pouvez voir ma source plus complète à cette adresse :

https://codes-sources.commentcamarche.net/source/33892-gestion-d-une-bd-access-avec-ado-net

et pour ceux qui auraient des questions, qu'ils n'hésitent pas.

http://vbmemo.pagesperso-orange.fr/index.htm

A voir également
Ce document intitulé « Les bases pour se connecter une base de données access avec vb.net » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous