jflacant
Messages postés4Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention 1 novembre 2010
-
26 oct. 2010 à 06:05
jflacant
Messages postés4Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention 1 novembre 2010
-
1 nov. 2010 à 01:09
Bonjour,
Par avance, merci pour votre indulgence envers un novice faisant ses premiers pas en VB.NET/ADO.NET
Je rencontre un problème dans un programme que j'essaie de réaliser. Je me suis aidé du tutoriel "GESTION DES DONNÉES VISUAL BASIC 2008 ET SQL SERVER CE", fort utile et très bien fait... Mais j'ai du faire une "boulette"...
J'essaie donc de réaliser une application avec VB Express 2010, et une base SQL CE. J'ai implémenté une base (fichier .SDF) avec plusieurs tables.
J'utilise ADO.NET pour accéder et mettre à jour mes données. Le problème rencontré est que mon DataSet ne met pas à jour les données de ma mes tables.
Lors de l'exécution de mon programme, tout se passe correctement, et je n'ai pas de message d'erreur. Les "update" et "insert" ont l'air de fonctionner correctement. Le "DataGridView" est bien modifié avec les valeurs demandées. Dés que je quitte mon programme pour revenir dans l'interface VB, toutes les données "disparaissent". Au lancement suivant, je me retrouve avec mes tables vides...
J'ai fait le test de renseigner un enregistrement dans l'interface VB, et ce dernier par contre reste bien dans la table, et est bien lu par l'application. Par contre, aucune des modifications par l'intermédiaire du programme n'est prise en compte plus longtemps que la période d'exécution de l'application.
cs_ELMABROUK
Messages postés4Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention29 octobre 2010 26 oct. 2010 à 18:34
mabrouki
bonjour jflacant
1/n'oublie pas de regarder dans ton repertoire debug car cest la ou se trouve la copie de travail de ta BD.
2/ Update ne se fait pas sur le DataSet actuel mais necesite un DataSet intermediaire de modification.
un petit exemple:bd MS ACCESS ,sur le conceteur une table Clients,un dataset ClientsDS1,un adapter ClientsTableAdapter1,un DataGriView1
form load:
-----------
Me.ClientsTableAdapter1.Fill(Me.ClientsDS1.Clients)
bouton btnMajBD_Click
-----------------------
'declarer un dataset dsModif contenant modifications
Dim dsModif As DataSet
's' il y a eu des modifications dans le dataset ClientsDS1
If Me.ClientsDS1.HasChanges Then
'si pas d'erreurs
If Not Me.ClientsDS1.HasErrors Then
'peupler le dsModif
dsModif = Me.ClientsDS1.GetChanges
'mettre à jour BD (argument: dsModif)
Me.ClientsTableAdapter1.Update(dsModif)
'actualiser ClientsDS1
Me.Projets_ClientsDS1.Merge(dsModif)
Me.Projets_ClientsDS1.AcceptChanges()
Else
'rejet des modifications
Me.ClientsDS1.RejectChanges()
End If
End If
bouton btnEffacerVue_Click
---------------------------
DataGridView1.DataSource = Nothing
DataGridView1.Rows.Clear()
jflacant
Messages postés4Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention 1 novembre 2010 1 nov. 2010 à 01:09
Bonsoir,
Suite de mes découvertes d'ADO.NET ;-)
J'ai essayé d'implémenter les conseils de Elmabrouk, mais j'ai rencontré quelques problèmes. En effet, dans mon code, je fais un insert sur une TableAdapter, et la ligne "dsModif = Me.ClientsDS1.GetChanges" me retourne une erreur comme quoi la valeur est Null.
Bref, à force d'essais, j'arrive (enfin ) à faire un enregistrement, et surtout, a le conserver :
Par contre, j'ai pu constaté tout de même un petit problème. Tant que je me contente de faire tourner mon programme, tout fonctionne bien. Par contre, dés que je vais dans "l'explorateur de base", et que je choisi "Afficher les données de la table", le contenu de ma table est ré initialisé...
Est-ce normale ? Ai je positionné une mauvaise option ?