VB.NET.Acces.aux.donnees

download VB.NET.Acces.aux.donnees

of 69

Transcript of VB.NET.Acces.aux.donnees

VB NET ACCES AUX DONNEES

Raliser Par : SGHIOUAR ABDELFATAH

VB NET

Accs aux donnes

Chapitre 1 : INTRODUCTIONMode connect et mode dconnectLe traitement des donnes repose traditionnellement sur un modle deux couches utilisant une connexion. Le traitement des donnes utilisant de plus en plus des architectures multicouches, les programmeurs s'orientent vers une approche dconnecte de faon proposer une meilleure volutivit pour leurs applications.

XML et ADO.NETADO.NET tire parti de la puissance de XML pour fournir un accs dconnect aux donnes. ADO.NET a t conu avec les classes XML du .NET Framework ; les deux composants appartiennent une mme architecture. ADO.NET et les classes XML du .NET Framework convergent dans l'objet DataSet. Le DataSet peut tre rempli de donnes provenant d'une source XML, qu'il s'agisse d'un fichier ou d'un flux XML. Le DataSet peut tre crit en XML conforme au W3C (World Wide Web Consortium), y compris son schma, en tant que schma en langage XSD (XML Schema Definition), quelle que soit la source des donnes contenues dans le DataSet. Le format de srialisation natif du DataSet tant XML, il constitue un excellent support pour le dplacement de donnes entre couches, faisant ainsi du DataSet le meilleur choix pour proposer un accs distant aux donnes et au contexte du schma vers et partir d'un service Web XML.

Composants de ADO.NETLes composants de ADO.NET ont t conus de faon distinguer l'accs aux donnes de la manipulation de donnes. Cette distinction est rendue possible par deux composants centraux de ADO.NET : le DataSet et le fournisseur de donnes .NET Framework, qui est un ensemble de composants comprenant les objets Connection, Command, DataReader et DataAdapter. Le DataSet ADO.NET est le composant principal de l'architecture dconnecte de ADO.NET. Le DataSet est explicitement conu pour permettre un accs aux donnes indpendant de toute source de donnes. Il peut donc tre utilis avec plusieurs sources de donnes diffrentes, utilis avec des donnes XML ou utilis pour grer des donnes locales de l'application. Le DataSet contient une collection d'un ou de plusieurs

2

VB NET

Accs aux donnes

objets DataTable constitus de lignes et de colonnes de donnes, ainsi que des informations concernant les contraintes de cl primaire, de cl trangre et des informations relationnelles sur les donnes contenues dans les objets DataTable. L'autre lment principal de l'architecture ADO.NET est le fournisseur de donnes .NET Framework dont les composants sont explicitement conus pour la manipulation des donnes et un accs aux donnes rapide, avant uniquement (forward only) et en lecture seule. L'objet Connection assure la connectivit avec une source de donnes. L'objet Command permet l'accs aux commandes de base de donnes pour retourner des donnes, modifier des donnes, excuter des procdures stockes et envoyer ou extraire des informations sur les paramtres. Le DataReader fournit un flux trs performant de donnes en provenance de la source de donnes. Enfin, le DataAdapter tablit une passerelle entre l'objet DataSet et la source de donnes. Le DataAdapter utilise les objets Command pour excuter des commandes SQL au niveau de la source de donnes afin d'une part d'approvisionner le DataSet en donnes, et d'autre part de rpercuter dans la source de donnes les modifications apportes aux donnes contenues dans le DataSet. Vous pouvez crire des fournisseurs de donnes .NET Framework pour n'importe quelle source de donnes. Le .NET Framework est livr avec deux fournisseurs de donnes .NET Framework : le fournisseur de donnes .NET Framework pour SQL Server et le fournisseur de donnes .NET Framework pour OLE DB. Le schma suivant reprsente les composants de l'architecture ADO.NET.Architecture ADO.NET

Le code suivant montre comment inclure l'espace de noms System.Data dans vos applications pour que vous puissiez utiliser ADO.NET.

3

VB NET

Accs aux donnes

Imports System.Data Les classes ADO.NET se trouvent dans System.Data.dll et sont intgres aux classes XML de System.Xml.dll. Lors de la compilation du code qui utilise l'espace de noms System.Data, il convient de rfrencer System.Data.dll ainsi que System.Xml.dll.

Connexion SQL Server l'aide de ADO.NETL'exemple de code suivant illustre la cration et l'ouverture d'une connexion une base de donnes SQL Server (version 7.0 ou ultrieure). Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind") nwindConn.Open() Fermeture de la connexion Il est recommand de toujours fermer l'objet Connection lorsque vous avez fini de l'utiliser. Pour cela, utilisez les mthodes Close ou Dispose de l'objet Connection.

Connexion une source de donnes OLE DB l'aide de ADO.NETL'exemple de code suivant illustre la cration et l'ouverture d'une connexion une source de donnes OLE DB. Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind") nwindConn.Open()

Connexion une source de donnes ODBC l'aide de ADO.NETL'exemple de code suivant illustre la cration et l'ouverture d'une connexion une source de donnes ODBC. Dim nwindConn As OdbcConnection = New OdbcConnection("Driver={SQL Server};Server=localhost; Trusted_Connection=yes;Database=northwind") nwindConn.Open()

4

VB NET

Accs aux donnes

Connexion une source de donnes Oracle l'aide de ADO.NETL'exemple de code suivant illustre la cration et l'ouverture d'une connexion une source de donnes Oracle. Dim nwindConn As OracleConnection = New OracleConnection("Data Source=MyOracleServer;Integrated Security=yes;") nwindConn.Open()

Excution d'une commandeAprs avoir tabli une connexion une source de donnes, vous pouvez excuter des commandes et retourner les rsultats de la source l'aide d'un objet Command. SqlClient Dim catCMD As SqlCommand = New SqlCommand("SELECT CategoryID, CategoryName FROM Categories", nwindConn) OleDb Dim catCMD As OleDbCommand = New OleDbCommand("SELECT CategoryID, CategoryName FROM Categories", nwindConn)

Obtention d'une valeur unique partir d'une base de donnesVous aurez peut-tre besoin de retourner des informations de base de donnes qui sont simplement une valeur unique plutt qu'une table ou un flux de donnes. Par exemple, vous souhaitez ventuellement retourner le rsultat d'une fonction d'agrgation telle que Count(*), Sum(Price) ou Avg(Quantity). L'objet Command fournit la fonctionnalit permettant de retourner des valeurs uniques l'aide de la mthode ExecuteScalar. La mthode ExecuteScalar retourne comme valeur scalaire la valeur de la premire colonne de la premire ligne du jeu de rsultats. L'exemple de code suivant retourne le nombre d'enregistrements dans une table utilisant la fonction d'agrgation Count. Dim ordersCMD As SqlCommand = New SqlCommand("SELECT Count(*) FROM Orders", nwindConn) Dim count As Int32 = CInt(ordersCMD.ExecuteScalar())

Excution d'oprations de cataloguePour excuter une commande permettant de modifier une base de donnes ou un catalogue, comme l'instruction CREATE TABLE ou CREATE PROCEDURE, crez Command l'aide de la ou des instructions Transact-

5

VB NET

Accs aux donnes

SQL appropries et de Connection. Excutez la commande avec la mthode ExecuteNonQuery de l'objet Command. L'exemple de code suivant cre une procdure stocke dans une base de donnes Microsoft SQL Server.Dim createStr As String = "CREATE PROCEDURE InsertCategory " & _ " @CategoryName nchar(15), " & _ " @Identity int OUT " & _ "AS " & _ "INSERT INTO Categories (CategoryName) " & _ "VALUES (@CategoryName) " & _ "SET @Identity = @@Identity " & _ "RETURN @@ROWCOUNT" Dim createCMD As SqlCommand = New SqlCommand(createStr, nwindConn) createCMD.ExecuteNonQuery()

Modification de donnes dans une base de donnesLes instructions SQL qui modifient les donnes (comme INSERT, UPDATE ou DELETE) ne retournent pas de lignes. De mme, de nombreuses procdures stockes effectuent une action mais ne retournent pas de lignes. Pour excuter des commandes qui ne retournent pas de lignes, crez un objet Command avec la commande SQL approprie et Connection (et les Parameters requis) puis utilisez la mthode ExecuteNonQuery de l'objet Command. La mthode ExecuteNonQuery retourne un entier qui reprsente le nombre de lignes affectes par l'instruction ou la procdure stocke excute. Si plusieurs instructions sont excutes, la valeur retourne est la somme des enregistrements affects par toutes ces instructions. L'exemple de code suivant excute une instruction INSERT pour insrer un enregistrement dans une base de donnes l'aide de ExecuteNonQuery.Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind") nwindConn.Open() Dim insertStr As String = "INSERT INTO Customers (CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')" Dim insertCMD As SqlCommand = New SqlCommand(insertStr, nwindConn) Dim recordsAffected As Int32 = insertCMD.ExecuteNonQuery()

L'exemple de code suivant excute la procdure stocke cre par l'exemple de code dans Excution d'oprations de catalogue. Aucune ligne n'est retourne par la procdure stocke, la mthode ExecuteNonQuery est donc utilise mais la procdure stocke reoit un paramtre d'entre et retourne un paramtre de sortie et une valeur de retour. Pour l'objet OleDbCommand, le paramtre ReturnValue doit tre d'abord ajout la collection Parameters.Dim insertCatCMD As SqlCommand = New SqlCommand("InsertCategory" , nwindConn)

6

VB NET

Accs aux donnes

insertCatCMD.CommandType = CommandType.StoredProcedure Dim workParm As SqlParameter workParm = insertCatCMD.Parameters.Add("@RowCount", SqlDbType.Int) workParm.Direction = ParameterDirection.ReturnValue workParm = insertCatCMD.Parameters.Add("@CategoryName", SqlDbType.NChar, 15) workParm = insertCatCMD.Parameters.Add("@Identity", SqlDbType.Int) workParm.Direction = ParameterDirection.Output insertCatCMD.Parameters("@CategoryName").Value = "New Category" insertCatCMD.ExecuteNonQuery() Dim catID As Int32 = CInt(insertCatCMD.Parameters("@Identity").Value) Dim rowCount As Int32 = CInt(insertCatCMD.Parameters("@RowCount").Value)

7

VB NET

Accs aux donnes

Chapitre 2 : UTILISATION DE DATAREADERVous pouvez utiliser le DataReader ADO.NET pour extraire d'une base de donnes un flux de donnes en lecture seule et avant uniquement. Les rsultats sont retourns pendant que la requte s'excute et stocks dans la mmoire tampon de rseau sur le client jusqu' ce que vous les demandiez au moyen de la mthode Read de DataReader. L'utilisation de DataReader peut augmenter les performances de l'application d'abord en extrayant les donnes ds qu'elles sont disponibles, plutt que d'attendre que tous les rsultats de la requte aient t retourns, et ensuite en ne stockant (par dfaut) qu'une seule ligne la fois dans la mmoire, ce qui rduit la charge du systme. Aprs avoir cr une instance de l'objet Command, vous crez un DataReader en appelant Command.ExecuteReader pour extraire les lignes d'une source de donnes, comme le montre l'exemple suivant. Dim myReader As SqlDataReader = myCommand.ExecuteReader() Vous utilisez la mthode Read de l'objet DataReader pour obtenir une ligne des rsultats de la requte. Vous pouvez accder chaque colonne de la ligne retourne en passant le nom ou la rfrence ordinale de la colonne au DataReader. Cependant, pour une meilleure performance, le DataReader fournit une srie de mthodes qui vous permettent d'accder aux valeurs de colonnes dans leurs types de donnes natifs (GetDateTime, GetDouble, GetGuid, GetInt32, etc.). Remarque La version 1.1 du .NET Framework inclut une proprit supplmentaire pour le DataReader, HasRows, laquelle vous permet de dterminer si le DataReader a retourn des rsultats avant de le lire. L'exemple de code suivant itre dans un objet DataReader et retourne une colonne partir de chaque ligne.Module Module1 Sub Main() Dim cn As New OleDb.OleDbConnection() cn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd.mdb;" cn.Open() Dim CMD As New OleDb.OleDbCommand("select * from Article", cn) Dim RDR As OleDb.OleDbDataReader = CMD.ExecuteReader() While (RDR.Read()) Console.WriteLine(RDR.GetString(1)) End While Console.ReadLine() RDR.Close() cn.Close() End Sub End Module

8

VB NET

Accs aux donnes

Le DataReader fournit un flux de donnes non mis en tampon qui permet la logique procdurale de traiter efficacement les rsultats provenant d'une source de donnes de faon squentielle. Le DataReader se rvle tre un bon choix lors de l'extraction de grandes quantits de donnes car celles-ci ne sont pas mises en cache dans la mmoire. Fermeture du DataReader Vous devez toujours appeler la mthode Close lorsque vous avez fini d'utiliser l'objet DataReader. Si Command contient des paramtres de sortie ou des valeurs de retour, ils ne seront pas disponibles avant la fermeture du DataReader. Notez que pendant l'ouverture d'un DataReader, Connection est utilis en mode exclusif par ce DataReader. Vous ne pourrez pas excuter les commandes pour Connection, y compris la cration d'un autre DataReader, jusqu' la fermeture du DataReader d'origine.

9

VB NET

Accs aux donnes

Chapitre 3 : UTILISATION DES PROCEDURES STOCKEES AVEC UNE COMMANDEExcution dune procdure stockeLes procdures stockes offrent de nombreux avantages dans les applications pilotes par des donnes. En utilisant les procdures stockes, les oprations de base de donnes peuvent tre encapsules dans une commande unique, optimises pour une meilleure performance et amliores grce une scurit supplmentaire. Tandis qu'une procdure stocke peut tre appele en passant simplement son nom suivi des arguments de paramtre comme instruction SQL, l'utilisation de la collection Parameters de l'objet Command ADO.NET vous permet de dfinir plus explicitement les paramtres de procdure stocke et d'accder aux paramtres de sortie et aux valeurs de retour. Pour appeler une procdure stocke, affectez StoredProcedure au CommandType de l'objet Command. Une fois StoredProcedure affect CommandType, vous pouvez utiliser la collection Parameters pour dfinir les paramtres, comme dans l'exemple suivant. Ce code appelle la procdure stocke VentesParCatgorie qui accepte un paramtre en entre.Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind") Dim salesCMD As SqlCommand = New SqlCommand("VentesParCatgorie", nwindConn) salesCMD.CommandType = CommandType.StoredProcedure Dim myParm As SqlParameter = salesCMD.Parameters.Add("@Categorie", SqlDbType.NVarChar, 15) myParm.Value = "Condiments" nwindConn.Open() Dim myReader As SqlDataReader = salesCMD.ExecuteReader() Console.WriteLine(myReader.GetName(0), myReader.GetName(1)) Do While myReader.Read() Console.WriteLine(myReader.GetString(0), myReader.GetDecimal(1)) Loop myReader.Close() nwindConn.Close()

10

VB NET

Accs aux donnes

Utilisation des paramtresUn objet Parameter peut tre cr l'aide du constructeur Parameter ou en appelant la mthode Add de la collection Parameters de Command. Parameters.Add prendra comme entre les arguments de constructeur ou un objet Parameter existant. Lorsque vous affectez une rfrence null au Value d'un Parameter, utilisez DBNull.Value. Pour les paramtres autres que Input, vous devez dfinir la proprit ParameterDirection pour spcifier si le type de paramtre est InputOutput, Output ou ReturnValue. L'exemple suivant illustre la diffrence entre la cration des paramtres Input, Output et ReturnValue.Dim sampleCMD As SqlCommand = New SqlCommand("SampleProc", nwindConn) sampleCMD.CommandType = CommandType.StoredProcedure Dim sampParm As SqlParameter = sampleCMD.Parameters.Add("RETURN_VALUE", SqlDbType.Int) sampParm.Direction = ParameterDirection.ReturnValue sampParm = sampleCMD.Parameters.Add("@InputParm", SqlDbType.NVarChar, 12) sampParm.Value = "Sample Value" sampParm = sampleCMD.Parameters.Add("@OutputParm", SqlDbType.NVarChar, 28) sampParm.Direction = ParameterDirection.Output nwindConn.Open() Dim sampReader As SqlDataReader = sampleCMD.ExecuteReader() Console.WriteLine(sampReader.GetName(0), sampReader.GetName(1)) Do While sampReader.Read() Console.WriteLine(sampReader.GetInt32(0), sampReader.GetString(1)) Loop sampReader.Close() nwindConn.Close() Console.WriteLine(" @OutputParm: ", sampleCMD.Parameters("@OutputParm").Value) Console.WriteLine("RETURN_VALUE: ", sampleCMD.Parameters("RETURN_VALUE").Value)

Utilisation des paramtres avec SqlCommandLorsque des paramtres sont utiliss avec SqlCommand, les noms des paramtres ajouts SqlParameterCollection doivent correspondre ceux des marqueurs de paramtre de votre procdure stocke. Le fournisseur de donnes .NET Framework pour SQL Server traite les paramtres de la procdure stocke comme des paramtres nomms et recherche les marqueurs de paramtre correspondants. Le fournisseur de donnes .NET Framework pour SQL Server ne prend pas en charge l'espace rserv de point d'interrogation (?) pour le passage des paramtres une instruction SQL ou une procdure stocke. Dans ce cas, vous devez utiliser des paramtres nomms, comme dans l'exemple suivant. SELECT * FROM Customers WHERE CustomerID = @CustomerID

11

VB NET

Accs aux donnes

Utilisation des paramtres avec OleDbCommand ou OdbcCommandLorsque des paramtres sont utiliss avec OleDbCommand ou OdbcCommand, l'ordre des paramtres ajouts Parameters doit correspondre celui des paramtres dfinis dans votre procdure stocke. Les fournisseurs de donnes .NET Framework pour OLE DB et ODBC traitent les paramtres d'une procdure stocke comme des espaces rservs et applique des valeurs de paramtre par ordre. En outre, les paramtres des valeurs de retour doivent tre les premiers ajouts la collection Parameters. Les fournisseurs de donnes .NET Framework pour OLE DB et ODBC ne prennent pas en charge les paramtres nomms pour le passage des paramtres une instruction SQL ou une procdure stocke. Dans ce cas, vous devez utiliser l'espace rserv de point d'interrogation (?), comme dans l'exemple suivant. SELECT * FROM Customers WHERE CustomerID = ? En consquence, l'ordre dans lequel les objets Parameter sont ajouts la collection Parameters doit directement correspondre la position de l'espace rserv de point d'interrogation pour le paramtre.

12

VB NET

Accs aux donnes

Chapitre 4 : REMPLISSAGE D'UN DATASET A PARTIR D'UN DATAADAPTERLe DataSetLe DataSet ADO.NET est une reprsentation de donnes rsident en mmoire qui propose un modle de programmation relationnel cohrent indpendant de la source de donnes. Le DataSet reprsente un jeu de donnes complet, comprenant des tables, des contraintes et des relations entre les tables. tant donn que le DataSet est indpendant de la source de donnes, il peut inclure des donnes locales par rapport l'application ainsi que des donnes provenant de plusieurs sources. L'interaction avec les sources de donnes existantes est contrle par le DataAdapter.

Le DataAdapterChaque fournisseur de donnes .NET Framework fourni avec le .NET Framework dispose d'un objet DataAdapter : le fournisseur de donnes .NET Framework pour OLE DB inclut un objet OleDbDataAdapter, le fournisseur de donnes .NET Framework pour SQL Server inclut un objet SqlDataAdapter et le fournisseur de donnes .NET Framework pour ODBC inclut un objet OdbcDataAdapter. Un DataAdapter est utilis pour extraire les donnes d'une source de donnes et remplir les tables dans un DataSet. Le DataAdapter rpercute aussi les modifications apportes au DataSet dans la source de donnes. Le DataAdapter utilise l'objet Connection du fournisseur de donnes .NET Framework pour se connecter une source de donnes et les objets Command pour extraire les donnes de la source et y rpercuter les modifications.

Les objets CommandLa proprit SelectCommand du DataAdapter est un objet Command qui extrait les donnes de la source de donnes. Les proprits InsertCommand, UpdateCommand et DeleteCommand du DataAdapter sont des objets Command qui grent les mises jour dans la source de donnes conformment aux modifications faites dans le DataSet. La mthode Fill du DataAdapter est utilise pour remplir un DataSet avec les rsultats de SelectCommand du DataAdapter. Fill prend comme arguments un DataSet remplir et un objet DataTable ou le nom du DataTable remplir avec les lignes retournes par SelectCommand.

13

VB NET

Accs aux donnes

L'exemple de code suivant cre une instance d'un DataAdapter qui utilise un Connection la base de donnes Northwind Microsoft SQL Server et remplit un DataTable dans un DataSet avec la liste des clients. L'instruction SQL et les arguments Connection passs au constructeur DataAdapter sont utiliss pour crer la proprit SelectCommand du DataAdapter.Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind") Dim selectCMD As SqlCommand = New SqlCommand("SELECT CustomerID, CompanyName FROM Customers", nwindConn) selectCMD.CommandTimeout = 30 Dim custDA As SqlDataAdapter = New SqlDataAdapter custDA.SelectCommand = selectCMD nwindConn.Open() Dim custDS As DataSet = New DataSet custDA.Fill(custDS, "Customers") nwindConn.Close()

Notez que le code n'ouvre pas et ne ferme pas la Connection de manire explicite. La mthode Fill ouvre implicitement la Connection que le DataAdapter utilise si la connexion n'est pas dj ouverte. Si Fill a ouvert la connexion, il la fermera aussi lorsque Fill est termin. Ceci peut simplifier votre code lorsque vous ne traitez qu'une seule opration telle que Fill ou Update. Cependant, si vous effectuez plusieurs oprations qui ncessitent une connexion ouverte, vous pouvez amliorer la performance de votre application en appelant de manire explicite la mthode Open de Connection, en effectuant les oprations sur la source de donnes puis en appelant la mthode Close de Connection. Vous devez chercher rduire le temps d'ouverture des connexions la source de donnes afin de librer la ressource utilise par les autres applications clientes.

14

VB NET

Accs aux donnes

Chapitre 5 : MISE A JOUR DE LA BASE DE DONNEES AVEC DATAADAPTER ET DATASETLa mthode UpdateLa mthode Update du DataAdapter est appele pour rpercuter les modifications provenant d'un DataSet dans la source de donnes. Lorsque vous appelez la mthode Update, le DataAdapter analyse les modifications apportes et excute la commande approprie (INSERT, UPDATE ou DELETE). Lorsque le DataAdapter trouve une modification dans un DataRow, il utilise InsertCommand, UpdateCommand ou DeleteCommand pour traiter la modification. Pour grer les exceptions qui peuvent se produire pendant un Update, utilisez l'vnement RowUpdated pour rpondre aux erreurs de mise jour des lignes. Vous pouvez aussi affecter true DataAdapter.ContinueUpdateOnError avant d'appeler Update et rpondre aux informations d'erreur stockes dans la proprit RowError d'une ligne particulire lorsque Update est termin. Les exemples suivants illustrent l'excution des mises jour des lignes modifies en dfinissant de manire explicite le UpdateCommand du DataAdapter. Notez que le paramtre spcifi dans la clause WHERE de l'instruction UPDATE est dfini pour utiliser la valeur Original de SourceColumn. Ceci est important, car la valeur Current peut avoir t modifie et ne pas correspondre la valeur dans la source de donnes. La valeur Original est la valeur qui a t utilise pour remplir le DataTable partir de la source de donnes.Dim catDA As SqlDataAdapter = New SqlDataAdapter("SELECT CategoryID, CategoryName FROM Categories", nwindConn) catDA.UpdateCommand = New SqlCommand("UPDATE Categories SET CategoryName = @CategoryName " & _ "WHERE CategoryID = @CategoryID", nwindConn) catDA.UpdateCommand.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15, "CategoryName") Dim workParm As SqlParameter = catDA.UpdateCommand.Parameters.Add("@CategoryID", SqlDbType.Int) workParm.SourceColumn = "CategoryID" workParm.SourceVersion = DataRowVersion.Original Dim catDS As DataSet = New DataSet catDA.Fill(catDS, "Categories") Dim cRow As DataRow = catDS.Tables("Categories").Rows(0) cRow("CategoryName") = "New Category" catDA.Update(catDS)

15

VB NET

Accs aux donnes

Ordre des insertions, mises jour et suppressionsDans de nombreuses circonstances, l'ordre dans lequel les modifications faites dans le DataSet sont transmises la source de donnes est important. Par exemple, si une valeur de cl primaire d'une ligne existante est mise jour et qu'une nouvelle ligne est ajoute avec la nouvelle valeur de cl primaire, il est important de traiter la mise jour avant l'insertion. Vous pouvez utiliser la mthode Select du DataTable pour retourner un tableau DataRow qui fait uniquement rfrence des lignes avec un RowState particulier. Vous pouvez alors passer le tableau DataRow retourn la mthode Update du DataAdapter pour traiter les lignes modifies. En spcifiant un sous-ensemble des lignes mettre jour, vous pouvez contrler l'ordre dans lequel les insertions, mises jour et suppressions sont traites. Le code suivant garantit, par exemple, que seront d'abord traites les lignes supprimes de la table puis les lignes mises jour et enfin les lignes insres.Dim updTable As DataTable = custDS.Tables("Customers") ' First process deletes. custDA.Update(updTable.Select(Nothing, Nothing, DataViewRowState.Deleted)) ' Next process updates. custDA.Update(updTable.Select(Nothing, Nothing, DataViewRowState.ModifiedCurrent)) ' Finally, process inserts. custDA.Update(updTable.Select(Nothing, Nothing, DataViewRowState.Added))

16

VB NET

Accs aux donnes

Chapitre 6 : LIAISON DES DONNEES AVEC WINDOWS FORMSCration d'un formulaire Windows simple dpendantL'utilisation la plus simple de la liaison de donnes dans l'environnement .NET sert afficher le contenu d'une table dans une grille. Pour l'exemple ci-dessous, suivez les tapes ci-aprs : 1. Crez un formulaire Windows. 2. Crer et configurer le groupe de donnes auquel vous voulez lier le formulaire. 3. Ajoutez un contrle de grille de donnes au formulaire et liez-le aux donnes.

Cration de l'exemple de formulaireVous trouverez ci-dessous les tapes dtailles de la cration d'un exemple de formulaire. 1. Cliquez sur Fichier, Nouveau, puis Projet. La bote de dialogue Nouveau projet s'affiche.

17

VB NET

Accs aux donnes

2. Slectionnez le Type de projet dans l'arborescence situe gauche de la bote de dialogue. Dans cet exemple, slectionnez Projets Visual Basic. 3. Slectionnez Application Windows dans la liste des modles situe droite de la bote de dialogue. 4. Indiquez le nom et l'emplacement du projet que vous voulez crer. Cliquez sur OK pour crer le projet. 5. Appuyez sur F4 pour afficher les proprits du formulaire. Changez la proprit Name du formulaire pour frmClients. 6. Changez la proprit Text pour Informations Clients.

Cration dune nouvelle connexionDans lexplorateur de serveurs, cliquez avec le bouton droit de la souris sur Connexions de donnes , slectionnez ensuite loption ajouter une nouvelle connexion

1. la boite de dialogue Proprits des liaisons de donnes s'affiche.

18

VB NET

Accs aux donnes

2. Changez le nom du serveur pour qu'il pointe vers celui de votre serveur SQL. 3. Changez le nom et le mot de passe de l'utilisateur ncessaire pour se connecter ce serveur SQL. 4. Slectionnez la base de donnes Northwind qui sera utilise dans l'exemple.

Cration dun adaptateur de donnes1. Dans la bote outils, dans l'onglet Donnes, slectionnez un SQLDataAdapter. Faites-le glisser et dposez-le sur le formulaire.

19

VB NET

Accs aux donnes

2. L'Assistant Configuration d'adaptateur de donnes s'affiche. Cliquez sur Suivant. 3. L'assistant vous permet de dsigner le type de requte. Slectionnez Utiliser des instructions SQL et cliquez sur Suivant. Tapez une instruction SQL et cliquez sur Gnrateur de requte pour que l'assistant cre l'instruction SQL votre place. Dans cet exemple, tapez l'instruction SQL suivante : SELECT CustomerID, CompanyName, ContactName, ContactTitle, Country FROM Customers

20

VB NET

Accs aux donnes

4. Cliquez sur Suivant puis sur Terminer pour effectuer le processus. Notez qu'un objet SQLConnection nomm SQLConnection1 et qu'un objet SQLDataAdapter nomm SQLDataAdapter1 apparaissent dans la barre d'tat du formulaire. L'objet SQLConnection1 contient des informations concernant l'accs la base de donnes slectionne. L'objet SQLDataAdapter1 contient une requte dfinissant les tables et les colonnes de la base de donnes laquelle vous voulez accder. Remarque Dans notre exemple, le SQLDataAdapter est slectionn depuis la bote outils car vous utilisez un serveur SQL. Cet objet ne vous permet de vous connecter qu' des bases de donnes du serveur SQL. Si vous souhaitez vous connecter d'autres types de donnes OLEDB, slectionnez l'OLEDBDataAdapter plus gnrique.

Cration de la classe de groupe de donnesL'tape suivante consiste crer une classe de groupe de donnes base sur la requte slectionne lors de la cration de l'adaptateur de donnes. Pour crer la classe de groupe de donnes : 1. Cliquez avec le bouton droit sur l'objet SQLDataAdapter1, puis sur Gnrer le groupe de donnes. La bote de dialogue Gnrer le groupe de donnes s'affiche.

21

VB NET

Accs aux donnes

2. Entrez dsNorthwind comme nom du nouveau groupe de donnes que vous crez. Assurez-vous d'avoir activ la case cocher Ajouter ce groupe de donnes au concepteur. Cliquez sur OK. Ceci cre le groupe de donnes. Lorsque cette tape est termine, vous voyez un nouveau contrle, dsNorthwind1, dans la barre d'tat de ce formulaire. Ce nouveau contrle est une rfrence au fichier dsNorthwind.xsd qui a galement t ajout votre fentre Explorateur de solutions. dsNorthwind.xsd est une dfinition de schma XML de l'instruction SQL que vous avez tape prcdemment. Il existe une classe derrire ce fichier XSD que vous ne pouvez voir sauf si vous cliquez sur Projet, puis sur Afficher tous les fichiers dans le menu. Vous pouvez ensuite cliquer sur le signe plus qui s'affiche derrire le fichier dsNorthwind.xsd pour voir le fichier dsNorthwind.vb. La classe dsNorthwind.vb a des proprits qui correspondent au groupe de donnes courant et des proprits qui correspondent chaque colonne spcifie dans votre instruction SQL. Bien que cette classe ne vous soit d'aucune utilit, vous devez savoir qu'elle se trouve l.

Ajout d'un contrle de grille de donnes pour afficher les donnes prsent, vous tes prt crer un formulaire pour afficher les donnes contenues dans le groupe de donnes. Dans cet exemple, vous ajouterez un contrle de grille de donnes unique au formulaire. Le contrle de grille de donnes affichera les donnes contenues dans le groupe de donnes. Voici ce que vous devez faire : 1. En haut de la fentre, cliquez sur l'onglet pour afficher le formulaire frmCustomers. 2. Dans l'onglet Windows Forms de la bote de dialogue, faites glisser un contrle de grille de donnes sur le formulaire. Dimensionnez le contrle selon vos besoins. 3. Appuyez sur F4 pour afficher les proprits du contrle. 4. Pour la proprit DataSource, slectionnez dsNorthwind1. 5. Pour la proprit DataMember, slectionnez Customers. Les tapes que vous venez de terminer ont li le groupe de donnes au contrle de grille de donnes. Il suffit d'une tape supplmentaire pour voir les donnes s'afficher dans le contrle de grille de donnes.

Remplissage du contrle de grille de donnes avec des donnesBien que le contrle de grille de donnes soit li au groupe de donnes, ce dernier n'est pas rempli. Nous allons ajouter un boutons de commande qui permettra de remplir la grille.22

VB NET

Accs aux donnes

Faites glisser un bouton de commande su le formulaire Pour la proprit name, tapez cmdCharger Pour la proprit text, tapez Charger Double cliquez sur le bouton et tapez le code suivantSqlDataAdapter1.Fill(dsNorthwind1, "Customers")

prsent, vous tes prt voir les donnes de la table Customers affiches dans le contrle de grille de donnes. Il reste une tape avant que vous ne puissiez excuter ce formulaire. Du fait que vous avez modifi le nom du formulaire, vous devez indiquer au projet quel sera le formulaire de dmarrage. 1. Dans la fentre Explorateur de solutions, cliquez sur le nom de votre projet. 2. Cliquez sur le projet avec le bouton droit et choisissez Proprits dans le menu contextuel. 3. Cliquez sur la liste modifiable Objet de dmarrage et choisissez frmCustomers dans la liste. 4. Cliquez sur OK. 5. Appuyez sur F5 pour excuter ce projet et, si vous avez effectu toutes les oprations correctement, vous devez prsent voir s'afficher les donnes des clients dans le contrle de grille de donnes aprs click sur le bouton Chager.

Utilisation des listes modifiables et des zones de listesL'exemple que vous venez de crer convient bien pour les petits groupes de donnes, mais sera peu efficace si la table customers contient des milliers d'enregistrements. Le problme est qu'il rcupre tous les clients de la table Customers et les affiche dans le contrle de grille de donnes. Bien que cette technique soit trs bonne lorsqu'il s'agit d'une dmonstration, elle se rvle inadapte une application de production. Un serveur de base de donnes est optimis pour traiter des volumes importants de donnes, mais il est souhaitable de ne rcuprer que des ensembles de rsultats de petite taille. L'exemple de la section prcdente serait plus efficace si l'utilisateur commenait par limiter les donnes en slectionnant un pays particulier dans la liste modifiable, puis n'affiche que les clients de ce pays. Cette section vous montre comment crer la liste modifiable dpendante. La section suivante vous montre comment

23

VB NET

Accs aux donnes

utiliser la liste modifiable pour limiter les donnes affiches dans le contrle de grille de donnes. Cet exemple ncessite les tapes de base suivantes : 1. Ajout d'un second adaptateur de donnes au formulaire. 2. Cration d'un second groupe de donnes. 3. Ajout d'une liste modifiable au formulaire. 4. Liaison de la liste modifiable au second adaptateur de donnes. 5. Remplissage de la liste modifiable avec les donnes du second adaptateur de donnes.

Ajout d'un second adaptateur de donnes au formulaireAvant d'ajouter une liste modifiable au formulaire, commencez par ajouter un second adaptateur de donnes au formulaire. Vous utiliserez cet adaptateur de donnes pour crer un groupe de donnes contenant une liste unique de pays partir de la table Customers. Pour ajouter le second adaptateur de donnes : 1. Dans la bote outils, sous l'onglet Donnes, slectionnez un SQLDataAdapter. Faites-le glisser et dposez-le sur le formulaire. L'Assistant Configuration d'adaptateur de donnes s'affiche. Cliquez sur Suivant. 2. Slectionnez la connexion la base de donnes Northwind que vous avez cre dans l'exemple prcdent. Cliquez sur Suivant. 3. Slectionnez Utiliser des instructions SQL et cliquez sur Suivant. 4. Entrez l'instruction SQL suivante :SELECT DISTINCT Country FROM Customers

5. Cliquez sur le bouton Options avances de cette bote de dialogue. 6. N'activez pas la case cocher Gnrer des instructions Insert, Update et Delete comme dans la figure 6. Ces instructions ne sont pas ncessaires pour un groupe de donnes utilis uniquement pour remplir une liste modifiable. Cliquez sur OK pour fermer cette bote de dialogue. 7. Cliquez sur Terminer pour gnrer le SQLDataAdapter. Un objet nomm SQLDataAdapter2 sera dsormais ajout la barre d'tat de votre formulaire.

24

VB NET

Accs aux donnes

Gnration du groupe de donnes1. Cliquez avec le bouton droit sur objet nomm SQLDataAdapter2, puis sur Gnrer le groupe de donnes. La bote de dialogue Gnrer le groupe de donnes s'affiche. 2. Cliquez sur Nouveau et entrez le nom dsCountries. Assurezvous d'avoir activ la case cocher Ajouter ce groupe de donnes au concepteur. Cliquez sur OK. Ceci cre le groupe de donnes. Vous avez ajout un nouvel objet nomm dsCountries1 la barre d'tat et un nouveau fichier XSD nomm dsCountries.xsd l'Explorateur de solutions. Ces deux lments crent ensemble la classe de groupe de donnes et servent effectuer la liaison de donnes sur la liste modifiable que vous allez crer.

Ajout d'une liste modifiable au formulaire prsent, vous tes prt ajouter la liste modifiable au formulaire. Vous devez agrandir le formulaire et dplacer le contrle de grille de donnes vers le bas pour faire de la place cette nouvelle liste modifiable. Aprs cela, dans la bote outils, vous pouvez faire glisser et dposer une liste modifiable sur le formulaire partir de l'onglet Windows Forms. Placezla au-dessus du contrle de grille de donne.

Liaison de la liste modifiable l'adaptateur de donnesLa liste modifiable que vous avez ajoute n'est lie aucune donne. Pour lier la liste modifiable au groupe de donnes dsCountries : 1. Slectionnez la liste modifiable. 2. Changez le nom pour cboCountry. 3. Dfinissez la proprit DataSource sur dsCountries1. Ceci spcifie la source de donnes partir de laquelle ce contrle de grille de donnes sera rempli. 4. Changez la proprit DropDownStyle pour DropDownList. 5. Dfinissez la proprit DisplayMember sur Customers.Country. Vous devez cliquer sur la liste droulante de la proprit DisplayMember, puis dvelopper Customers pour afficher la liste des colonnes que vous pouvez utiliser. Cette tape dsigne la colonne de la source de donnes utilise pour remplir le contrle de grille de donnes.

25

VB NET

Accs aux donnes

6. Dfinissez la proprit ValueMember du contrle de grille de donnes sur Customers.Country. La proprit ValueMember sert dsigner la valeur courante lorsqu'un lment est slectionn.

Remplissage de la liste modifiable avec des donnesComme pour le contrle de grille de donnes, vous devez crire le code permettant de remplir la liste modifiable de donnes. Ce code est ajout la procdure d'vnement Load.Private Sub frmCustomers_Load SqlDataAdapter2.Fill(DsCountries1, "Customers") End Sub

Affichage des donnes en fonction d'une requte paramtre prsent que la liste modifiable est charge avec les pays, il est temps d'utiliser le pays slectionn dans la liste modifiable pour slectionner les clients charger dans le contrle de grille de donnes. Les tapes principales sont les suivantes : 1. Modifiez la proprit SelectCommand de l'objet SqlDataAdapter1 pour qu'il accepte un paramtre du pays pour lequel vous voulez afficher des donnes. 2. Ajoutez le code qui s'excute lorsque l'utilisateur slectionne un lment dans la liste modifiable.

Modifiez la proprit SelectCommandL'tape suivante consiste modifier la proprit SelectCommand de l'adaptateur de donnes de manire ce qu'il soit bas sur la requte paramtre. Les tapes sont les suivantes : 1. Dans la barre d'tat du formulaire, cliquez sur l'objet SqlDataAdapter1. 2. Appuyez sur F4 pour ouvrir la fentre Proprits. 3. ct de la proprit SelectCommand, cliquez sur le signe plus pour dvelopper la liste des sous-proprits. 4. Cliquez sur la proprit CommandText. Cliquez sur Gnrer (...) pour afficher la bote de dialogue Gnrateur de requte. 5. Ajoutez une clause WHERE afin que l'instruction SQL ressemble ceci : SELECT CustomerID, CompanyName, ContactName, Country

26

VB NET

Accs aux donnes

FROM Customers WHERE Country = @CountryParam 6. Cliquez sur OK pour accepter cette modification. 7. Cliquez sur l'objet SQLDataAdapter1. 8. Cliquez sur Donnes, sur Gnrer le groupe de donnes, puis sur OK pour rgnrer le groupe de donnes existant.

Ajoutez le code qui s'excute lorsque l'utilisateur slectionne un lment dans la liste modifiableLa partie finale de code remplit le contrle de grille de donnes lorsqu'un pays est slectionn dans la liste modifiable cboCountry. Les tapes principales sont les suivantes : 1. Rpondez l'vnement SelectedIndexChanged. 2. Dfinissez le paramtre dans le groupe de donnes avec les donnes rcupres partir de l'lment slectionn dans la liste modifiable. 3. Remplissez le groupe de donnes l'aide de ce paramtre. Suivez ces tapes pour ajouter le code et permettre que cela fonctionne. 1. Ouvrez le formulaire en mode cration. 2. Double-cliquez sur la liste modifiable cboCountry pour afficher la procdure d'vnement SelectedIndexChanged. Il s'agit de l'vnement dclench lorsque vous choisissez un nouvel lment dans la liste modifiable. 3. crivez le code suivant dans cette procdure.Private Sub cboCountry_SelectedIndexChanged ' Obtention de l'objet Parameter et dfinition de sa valeur SqlDataAdapter1.SelectCommand.Parameters.Item("@CountryParam").Value = _ cboCountry.SelectedValue ' Suppression du groupe de donnes DsNorthwind1.customers.rows.Clear() ' Chargement du groupe de donnes en utilisant la valeur du paramtre SqlDataAdapter1.Fill(DsNorthwind1, "Cutomers") End Sub

Vous devez utiliser l'objet SelectCommand de l'adaptateur de donnes pour rcuprer l'objet Parameter spcifi. Vous pouvez ensuite dfinir la proprit Value de ce paramtre sur la proprit SelectedValue de la liste modifiable. La proprit SelectedValue est remplie avec le nom du pays car vous avez dfini la proprit ValueMember de la liste modifiable pour qu'elle utilise le champ Country du groupe de donnes. Aprs avoir rempli cette valeur, vous pouvez remplir le groupe de donnes du client et

27

VB NET

Accs aux donnes

le contrle de grille de donnes sera rempli automatiquement par les seuls clients du pays slectionn.

Formulaire de mise jour dune tableLes exemples prcdents ont tous affich les donnes dans un contrle de grille de donnes. Lorsque vous crez des applications, il est galement ncessaire d'afficher des colonnes individuelles dans des zones de texte d'un formulaire pour les diter. Bien que le propos de ce document ne soit pas de vous faire apprendre l'dition des donnes, vous allez apprendre afficher des donnes dans les zones de texte. Les tapes principales sont les suivantes : 1. Crer un formulaire Windows. 2. Crer et configurer le groupe de donnes auquel vous voulez lier le formulaire. 3. Ajouter des contrles au formulaire et liez-les au groupe de donnes. 4. Ajouter des boutons de commande permettant l'utilisateur de naviguer d'une ligne l'autre.

Ajout de contrles au formulaire et liaison de ces contrles au groupe de donnesAjoutez des contrles au formulaire et dfinissez leurs proprits comme dans le tableau 1.

28

VB NET

Accs aux donnes

Tableau des contrles utiliss pour crer le formulaire Type de contrle Proprit Valeur Label Name Label1 Text Code TextBox Name txtCustomerID Label Name Label2 Text Nom TextBox Name txtCompanyName Label Name Label3 Text Contact TextBox Name txtContactName CommandButton Name cmdPremier Text CommandButton Name cmdDernier Text >> CommandButton Name cmdCharger Text Charger CommandButton Name cmdAjouter Text Ajouter CommandButton Name cmdSupprimer Text Supprimer CommandButton Name cmdMAJ Text Mettre jour Vous devez prsent lier chaque zone de texte une colonne du groupe de donnes. Pour ce faire : 1. Slectionnez la zone de texte que vous voulez lier. 2. Appuyez sur F4 pour afficher la fentre Proprits. 3. Cliquez pour dvelopper les proprits DataBindings. 4. Sous DataBindings, slectionnez la proprit Text. 5. Ouvrez la liste modifiable et liez chaque zone de texte au champ appropri. Par exemple, pour lier la zone de texte txtCustomerID au champ CustomerID, cliquez sur le signe plus de

29

VB NET

Accs aux donnes

DsCustomers1, sur le signe plus de Customers, et slectionnez le champ CustomerID. Ecrivez le code permettant de remplir le formulaire de donnes. Pour cela double cliquez sur le bouton charger puis tapez le code :DsNorthwind1.customers.Clear() SqlDataAdapter1.Fill(DsCustomers1, "Clients") End Sub

L'objet CurrencyManagerAssure un suivi de la position et supervise les liaisons une source de donnes. Il existe, dans le formulaire, un objet CurrencyManager pour chaque source de donnes discrte laquelle vous vous liez. Si les contrles du formulaire sont tous lis la mme source (par exemple, si plusieurs contrles TextBox sont lis la mme table de donnes), ils partagent alors le mme CurrencyManager

Ajout de boutons de commande permettant l'utilisateur de naviguer d'une ligne l'autreCommenons par dclarer une donne membre de type CurrencyManager dans notre formulaire que nous appellerons cmCustomers. Private cmCustomers as CurrencyManager Nous devons ensuite rcuprer le CurrencyManager au chargement du formulaire partir de la collection BindingContext.Private Sub Form1_Load cmCustomers = BindingContext(dsNorthwind1, Customers) End Sub

Code des boutons de navigationPrivate Sub cmdPrecedent_Click cmCustomers Position -= 1 End Sub Private Sub cmdPremier_Click cmCustomers.Position = 0 End Sub Private Sub cmdDernier_Click cmCustomers.Position = dsNorthwind1.Customers.Rows.Count - 1 End Sub

Ajout de boutons de commande de mise jour

30

VB NET

Accs aux donnes

Le code suivant permet lajout dun nouvel enregistrement, la suppression dun enregistrement existant et enfin la mise jour de la base de donnesPrivate Sub cmdAjouter_Click cmCustomers.AddNew() End Sub Private Sub cmdSupprimer_Click cmCustomers.RemoveAt(cmCustomers.Position) End Sub Private Sub cmdMAJ_Click daCustomers.Update(dsNorthwind1) End Sub

31

VB NET

Accs aux donnes

Chapitre 7 : Quelques contrles dpendantsZone de texte, Label

Pour lier une zone de texte une source de donnes : En mode design, utiliser la proprit text du DataBinding.

Dans lexemple ci-dessus, la zone de texte TextBox1 est lie a champs OrderID de la table Orders du dataSet DsNorthwind1. Cette liaison peut tre effectue au cours de lexcution comme suit :TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", DsNorthwind1, "Orders.OrderID"))

Un label peut tre li de la mme manire quune zone de texte, seulement il ne peut tre utilis que pour afficher des donnes.

DateTimePeacker

32

VB NET

Accs aux donnes

Ce contrle est utilis pour permettre l'utilisateur de slectionner une date et/ou une heure, et pour afficher cette valeur date et heure au format spcifi. Vous pouvez restreindre la fourchette de dates et d'heures qu'il sera possible de slectionner en dfinissant les proprits MinDate et MaxDate.

La proprit Format dtermine le format du contrle qui peut tre Long, Short, Time ou Custom. Si la proprit Format a pour valeur Custom, vous pouvez crer votre propre style de format en dfinissant la proprit CustomFormat. Afin d'utiliser un contrle de style up-down pour slectionner la valeur de date-heure, affectez la proprit ShowUpDown la valeur true. Lors de sa slection, le contrle Calendar ne se droulera pas. La date et l'heure peuvent tre rgles par la slection de chaque lment individuellement et par l'utilisation des boutons haut et bas pour en modifier la valeur. Pour lier ce contrle : En mode cration, utilisez la proprit Value du DataBinding.

33

VB NET

Accs aux donnes

Cet exemple permet de lier le contrle DateTimePeaker1 au champ OrderDate de la table Orders. Au cours de lexcution, tapez le code suivant :DateTimePicker1.DataBindings.Add(New System.Windows.Forms.Binding("Value", DsNorthwind1, "Orders.OrderDate"))

ComboBox, ListBoxUn ComboBox affiche un champ d'dition associ un ListBox, permettant l'utilisateur de slectionner dans la liste ou d'entrer un nouveau texte. La proprit DropDownStyle dtermine le style de la zone de liste droulante afficher. Pour afficher toujours une liste que l'utilisateur ne peut pas modifier, utilisez un contrle ListBox. En plus de l'affichage et de la fonctionnalit de slection, le ComboBox comprend galement des fonctionnalits qui vous permettent d'ajouter efficacement des lments au ComboBox et de rechercher du texte dans les lments de la liste. Les mthodes BeginUpdate et EndUpdate vous permettent d'ajouter un grand nombre d'lments au ComboBox sans repeindre le contrle chaque fois qu'un lment est ajout la liste. Les mthodes FindString et FindStringExact vous permettent de rechercher un lment dans la liste qui contient une chane recherche spcifique. La proprit Text spcifie la chane affiche dans le champ d'dition. La proprit SelectedIndex renvoie ou dfinit l'lment en cours.

Pour lier ce contrle une source de donnes : En mode cration utilisez les proprits suivantes

34

VB NET

Accs aux donnes

DataSource : indique la source qui sera utilise pour ajouter des objets au contrle. DisplayMember : spcifie le champ qui sera affich dans le ComboBox. ValueMember : Nom de champ qui sera utilis comme valeur retenue aprs le choix de lutilisateur. SelectedValue du DataBinding : Champ de la table lie au contrle. Text du DataBinding : Champ qui sera affich dans la zone de texte.

Au cours de lexcution, la liaison peut tre faite avec le code suivant :ComboBox1.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", DsNorthwind1, "Orders.CustomerID")) ComboBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", DsNorthwind1, "Customers.CompanyName")) ComboBox1.DataSource = DsNorthwind1.Customers ComboBox1.DisplayMember = "CompanyName" ComboBox1.ValueMember = "CustomerID"

35

VB NET

Accs aux donnes

Chapitre 8 : Cration et utilisation de DataViewsUn DataView vous permet de crer diffrentes vues des donnes stockes dans un DataTable, possibilit qui est souvent utilise dans les applications de liaison de donnes. En utilisant un DataView, vous pouvez prsenter les donnes d'une table en appliquant diffrents ordres de tri et filtrer les donnes en fonction d'un tat de ligne ou d'une expression de filtre.

Cration d'un DataViewCration dun dataView en mode conception :

1. Commencez par crer un dataAdapter et un dataset 2. A partir de la boite outils, glissez un dataView sur votre formulaire et renseignez sa proprit Table. 3. Liez ensuite la grille de donnes au dataview que vous venez de crer Cration dun dataView au cours de lexcution : Vous pouvez utiliser le constructeur de DataView ou crer une rfrence la proprit DefaultView du DataTable. L'exemple de code suivant cre un DataView li la table Customers avec un filtre sur les clients des USA et un tri sur le champ contactName.Dim dvCustomers As DataView = New DataView(DsNorthwind1.Customers, _ "Country = 'USA'", _

36

VB NET

Accs aux donnes

"ContactName", _ DataViewRowState.CurrentRows)

L'exemple de code suivant montre comment obtenir une rfrence au DataView par dfaut d'un DataTable l'aide de la proprit DefaultView de la table.Dim dvProduits As DataView = dsNorthwind1.Customers.DefaultView

Filtrage par tat de ligne

l'aide de la proprit RowStateFilter, vous pouvez spcifier les versions de lignes afficher. Par exemple, si la proprit RowStateFilter est dfinie DataViewRowState.Deleted, le DataView expose la version d'origine de toutes les lignes supprimes, car ces lignes n'ont plus de version actuelle. Vous pouvez dterminer quelle version d'une ligne est expose l'aide de la proprit RowVersion du DataRowView.

37

VB NET

Accs aux donnes

Le tableau suivant prsente les options de DataViewRowState. DataViewRowState CurrentRows Added Deleted ModifiedCurrent ModifiedOriginal None OriginalRows Unchanged Description Version actuelle de toutes les lignes inchanges, ajoutes et modifies. Il s'agit de la valeur par dfaut. Version actuelle de toutes les lignes ajoutes. Version d'origine de toutes les lignes supprimes. Version actuelle de toutes les lignes modifies. Version d'origine de toutes les lignes modifies. Aucune ligne. Version d'origine de toutes les lignes inchanges, modifies et supprimes. Version actuelle de toutes les lignes inchanges.

Tri et filtrage de donnes l'aide d'un DataViewLe DataView offre diffrentes possibilits pour le tri et le filtrage des donnes d'un DataTable :

En utilisant la proprit Sort, vous pouvez spcifier un ordre de tri en fonction d'une ou de plusieurs colonnes et inclure des paramtres ASC (ordre croissant) et DESC (ordre dcroissant). Vous pouvez utiliser la proprit ApplyDefaultSort pour crer automatiquement un ordre de tri, croissant, bas sur la ou les colonnes cls primaires de la table. ApplyDefaultSort est applicable uniquement lorsque la proprit Sort est une rfrence null ou une chane vide et lorsqu'une cl primaire est dfinie dans la table. En utilisant la proprit RowFilter, vous pouvez spcifier des sous-ensembles de lignes en fonction des valeurs de leurs colonnes.

L'exemple de code suivant cre une vue faisant apparatre tous les produits pour lesquels la quantit en stock est infrieure ou gale au niveau de passage d'une nouvelle commande, tris d'abord par ID de fournisseur, puis par nom de produit.Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _ "UnitsInStock