CodeS-SourceS
Rechercher un code, un tuto, une réponse

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

Juin 2017


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 :

http://www.vbfrance.com/code.aspx?ID=33892

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

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

A voir également

Publié par doro81079.
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.
Règles à suivre avant de déposer une source (un programme)
Showintaskbar = true + borderstyle = 0-none