Pb ADO.NET en VB Express 2010 : Mon programme n'enregistre pas le contenu du Dat [Résolu]

jflacant 4 Messages postés dimanche 3 octobre 2010Date d'inscription 1 novembre 2010 Dernière intervention - 26 oct. 2010 à 06:05 - Dernière réponse : jflacant 4 Messages postés dimanche 3 octobre 2010Date d'inscription 1 novembre 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_ELMABROUK 4 Messages postés vendredi 3 mars 2006Date d'inscription 29 octobre 2010 Dernière intervention - 26 oct. 2010 à 18:34
3
Merci
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....

Merci cs_ELMABROUK 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_ELMABROUK
cs_ELMABROUK 4 Messages postés vendredi 3 mars 2006Date d'inscription 29 octobre 2010 Dernière intervention - 26 oct. 2010 à 17:47
0
Merci
mabrouki
Commenter la réponse de cs_ELMABROUK
jflacant 4 Messages postés dimanche 3 octobre 2010Date d'inscription 1 novembre 2010 Dernière intervention - 26 oct. 2010 à 18:22
0
Merci
Bonsoir,

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

Cordialement

JF
Commenter la réponse de jflacant
jflacant 4 Messages postés dimanche 3 octobre 2010Date d'inscription 1 novembre 2010 Dernière intervention - 26 oct. 2010 à 19:41
0
Merci
Bonsoir Elmabrouk,

J'essaie ca ce soir.

Merci pour tes conseils

Cordialement

JF
Commenter la réponse de jflacant
jflacant 4 Messages postés dimanche 3 octobre 2010Date d'inscription 1 novembre 2010 Dernière intervention - 1 nov. 2010 à 01:09
0
Merci
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
Commenter la réponse de jflacant

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.