Pb ADO.NET en VB Express 2010 : Mon programme n'enregistre pas le contenu du Dat

Résolu
jflacant Messages postés 4 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 1 novembre 2010 - 26 oct. 2010 à 06:05
jflacant Messages postés 4 Date d'inscription dimanche 3 octobre 2010 Statut Membre Derniè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.

Je vous remercie tous par avance pour votre aide.

Bon codes

JF

5 réponses

cs_ELMABROUK Messages postés 4 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 29 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()

bouton btnRafraichirVue_Click
-----------------------------
DataGridView1.DataSource = Me.ClientsDS1
DataGridView1.DataMember = Me.ClientsDS1.Tables(0).TableName


bon code....
3
cs_ELMABROUK Messages postés 4 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 29 octobre 2010
26 oct. 2010 à 17:47
mabrouki
0
jflacant Messages postés 4 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 1 novembre 2010
26 oct. 2010 à 18:22
Bonsoir,

Merci pour l'interer porté, mais je pense qu'il manque un bout du texte

Cordialement

JF
0
jflacant Messages postés 4 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 1 novembre 2010
26 oct. 2010 à 19:41
Bonsoir Elmabrouk,

J'essaie ca ce soir.

Merci pour tes conseils

Cordialement

JF
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jflacant Messages postés 4 Date d'inscription dimanche 3 octobre 2010 Statut Membre Derniè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 :

Me.CategoriesTableAdapter.Insert("test", 3, 5)
Me.CategoriesBindingSource.EndEdit()
Me.CategoriesTableAdapter.Update(Me.GlobalDS.Categories)
Me.GlobalDS.AcceptChanges()

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 ?

Merci pour votre retour

Cordialement

Jeff
0
Rejoignez-nous