Mise à jour d?une base Access avec ADO.NET

Mode déconnecté
Partie 2 : Modification, Suppression, Ajout d'enregistrements
Mise à jour avec la Base de Donnée
Pré-requis : Partie 1
Vu 19305  fois

 

Utilisation d'une base Access avec ADO.NET

(Partie 2)

Modification, Suppression, Ajout d'un enregistrement
Mise à jour avec la Base de Donnée

Pré-requis : Partie 1 (Déclaration de la connection, du DataAdapter, Remplissage du DataSet)

Nous avons vu dans la partie 1 comment se connecter à une base Access en mode déconnecté, déclarer et parametrer un DataAdapter, un DataSet et lire les enregistrement contenu dans ce dernier pour remplir un DataGrid.

Dans ce tutorial nous allons voir comment il est possible de modifier, supprimer et ajouter un enregistrement (toujours en mode déconnecté) dans notre Dataset à partir de notre Datagrid , puis mettre à jour notre base à l'aide de notre DataAdapter et de l'objet OleDbCommandBuilder.

 

 L'objet OleDbCommandBuilder

Pour se faciliter la tâche, lors de l'utilisation d'un DataSet, nous avons la possibilité grâce à l'objet OleDbCommandBuilder de générer automatiquement les objets Command utilisés pour le renvoie des données entre le DataSet et le DataAdapter.

Pour créer un objet OleDbCommandBuilder, nous devons le déclarer en lui passant en paramètre l'objet DataAdapter à utiliser. Dans notre cas :

Dim CmdBuild As OleDbCommandBuilder
CmdBuild = New OleDb.OleDbCommandBuilder(AdapTContact)

Maintenant il nous suffit d'utiliser les différentes méthode de l'objet pour créer et renvoyer les objets Command qui nous conviennent soit :

  1. GetUpdateCommand (Obtient l'objet Command utile pour effectuer une mise à jour dans la base de donnée)
  2. GetInsertCommand (Obtient l'objet Command utile pour effectuer une insertion dans la base de donnée)
  3. GetDeleteCommand (Obtient l'objet Command utile pour effectuer une suppression dans la base de donnée)

Exemple pour générer un objet Command pour une suppression

AdapTContact.DeleteCommand = CmdBuild.GetDeleteCommand() 

 

 Mise à jour de la base de donnée

Pour mettre ensuite à jour des données et gérer le transfert de ces données modifiées dans notre base, nous devons nous interresser aux proprietés citées ci-dessous de l'objet DataAdapter

  1. UpdateCommand (envoie une requete de modification)
  2. InsertCommand (envoie une requete d'ajout)
  3. DeleteCommande (envoie une requete de suppression)

Exemple pour une suppression

AdapTContact.Update(DtSet, "TContact")

 

 Exemple de suppression d'un enregistrement sélectionné dans un DataGrid
Pour rappel , notre DataGrid se nomme Grid_client, la clé primaire de nos enregistrement est numérique et se situe dans le premier champ.

 Récupération d'information

En premier lieu nous devons recuperer le numero de ligne de l'enregistrement à supprimer, pour ce faire il suffit d'appliquer la méthode CurrentRowIndex à l'objet DataGrid qui nous renverasr le n° de la ligne actuellement sélectionnée

Dim ligneencours As Integer
ligneencours = Grid_client.CurrentRowIndex

Nous allons ensuite récuperer la clé primaire de cette ligne (qui se situe dans le premier champ de la ligne en cours) grâce à la méthode Item (permet d'obtenir ou de definir la valeur d'une cellule spécifié) de l'objet DataGrid.

Dim CleUnik As String
CleUnik = Grid_client.Item(ligneencours, 0)

 

 Traitement de suppression

Nous pouvons donc maintenant rechercher notre entregistrement dans notre DataSet (DtSet pour notre exemple).
Pour ce faire nous allons creer un objet DataRow nommé Ligne (qui contiendra le fitre de notre selection , soit l'enregistrement que l'on doit supprimer) et lui affecter notre recherche.

Dim Ligne As DataRow()
Ligne = DtSet.Tables("TContact").Select("Cleunik = " & CleUnik)

Puis le supprimer par la méthode Delete (supprime un DataRow) de l'objet ligne créer précédement (vous remarquerez le parmetre "0" de l'objet ligne, en effet notre filtre porté sur la clé primaire ne nous retourne qu'une ligne qui correspond a l'index "0")

Ligne(0).Delete()

 

 Mise à jour avec la Base

Ouverture de la connection

Connection.Open()

Création CommandBuilder pour notre DataAdapter "AdapTContact"

Dim CmdBuild As OleDbCommandBuilder
CmdBuild = New OleDb.OleDbCommandBuilder(AdapTContact)

Géneration de l'objet Command de suppression necessaire pour la mise à jour

AdapTContact.DeleteCommand = CmdBuild.GetDeleteCommand()

Mise a jour avec la base

AdapTContact.Update(DtSet, "TContact")

Fermeture de la connection

Connection.Close()

 Exemple d'ajout d'un enregistrement à partir de champs de type Textbox
Pour ajouter un enregistrement à un objet DataSet, nous devons auparavant créer une nouvelle ligne . La méthode NewRow (qui créer une ligne dans une table passé en parametre en se reportant au shéma de la table) va nous être grandement utile.

 Création de la nouvelle ligne

Déclaration de la nouvelle ligne

Dim NewLigne As DataRow


Création d'une nouvelle ligne dans la table "TConcact"

NewLigne = DtSet.Tables("TContact").NewRow

 Mise à jour de la ligne


Puis il nous suffit affecter aux champs (I) de notre nouvelle ligne, les valeurs correspondantes. Soit :

NewLigne(0) =DtSet.Tables.Item(0).Rows.Count + 1
NewLigne(1) = Tnom.Text
NewLigne(2) = Tprenom.Text
NewLigne(3) = Temail.Text
NewLigne(4) = Turl.Text
NewLigne(5) = Tcomm.Text


On met ensuite à jour notre table "TContact" contenu dans notre objet DataSet à l'aide de la méthode

 Add (ajoute une ligne dans une collection de lignes)

Ajout de la nouvelle ligne créer précédement à la table "TContact"

DtSet.Tables("TContact").Rows.Add(NewLigne)

 Mise à jour avec la Base

Pour finir , nous allons mettre à jour notre Base de donnée en créeant un Objet CommandBuilder qui se chargera de creer automatiquement l'Ojet Command necessaire à la mise à jour entre le DataSet et la base de donnée en passant par le DataAdapter

Connection.Open()
Dim CmdBuild As OleDbCommandBuilder
CmdBuild = New OleDb.OleDbCommandBuilder(AdapTContact)
AdapTContact.InsertCommand = CmdBuild.GetInsertCommand()
AdapTContact.Update(DtSet, "TContact")
Connection.Close()

 

 Exemple de modification d'un enregistrement à partir de champs de type Textbox

Pour modifier une ligne d'un DataSet c'est assez simple.
Soit "LaLigne" un objet DataRow representant l'enregistrement à modifier.

 Mise à jour avec la Base

Dim LaLigne As DataRow()
LaLigne = DtSet.Tables("TContact").Select("Cleunik = " & CleUnik)

 Modification de la ligne

LaLigne(0)(1) = Tnom.Text
LaLigne(0)(2) = Tprenom.Text
LaLigne(0)(3) = Temail.Text
LaLigne(0)(4) = Turl.Text
LaLigne(0)(5) = Tcomm.Text

 Mise à jour avec la Base

La procédure de mise à jour avec la base est à quelques chose peut identique que pour l'ajout ou la suppression d'un enregistrement

Connection.Open()
Dim CmdBuild As OleDbCommandBuilder
CmdBuild = New OleDb.OleDbCommandBuilder(Adapter)
Adapter.UpdateCommand = CmdBuild.GetUpdateCommand()
Adapter.Update(DtSet, table)
Connection.Close()


N'hésitez pas à télécharger les sources du projet Access & Ado.net pour un exemple complet


 

Publié le  16/02/2004
Auteur:  betatestvb
Cet article est lié au projet:  Ado.NET & Access

 

Commentaires

Pas de commentaires

Si vous souhaitez ajouter un commentaire vous devez être authentifié.

 

ASP MAGAZINE  ASP-PHP.NET  C²I  CodePPC  CodeS-SourceS  Dotnet-News.com  Tech Head Brothers 

Dotnet-Project.com© tous droits réservés
Webmaster Aleks. Ont collaboré à l'aboutissement de ce projet :
CodeS-SourceS.com, ASP-PHP.Net, DotNet-FR.org, C2i.fr, Newsletter ASP.NET.