[VB.NET] Problème MAJ BDD [Résolu]

Messages postés
113
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
6 mars 2008
- - Dernière réponse : cs_Botanique
Messages postés
113
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
6 mars 2008
- 23 sept. 2005 à 17:34
Bonjour,
j'ai un gros problème de mise à jour de ma base de données (une table principale et deux tables liées). Sur un WinFrom, j'ai des textbox et deux datagrids. Lorsque je change les valeurs des TextBox et que j'ajoute une ligne, j'appuie sur un bouton d'enregistrement mais seule la table principale est mise à jour.
Voici le code que j'utilise :

Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click

Dim BotaCommandBuilder, VernCommandBuilder, SynCommandBuilder As OleDbCommandBuilder
Dim LigneBota As DataRow

LigneBota = Me.DtsTest1.Table_botanique.Rows(Me.TxtBxKey.Text - 1)
LigneBota("Famille") = Me.ComboFamille.Text
LigneBota("Genre") = Me.ComboGenre.Text
LigneBota("Espèce") = Me.TxtBxNewSp.Text
Me.DtsTest1.EnforceConstraints = False
BotaCommandBuilder = New OleDbCommandBuilder(Me.OleDbDABotanique)
VernCommandBuilder = New OleDbCommandBuilder(Me.OleDbDAVern)
SynCommandBuilder = New OleDbCommandBuilder(Me.OleDbDASyn)
Me.OleDbDABotanique.Update(Me.DtsTest1, "Table_botanique")
Me.OleDbDAVern.Update(Me.DtsTest1, "Table_nom_vernaculaire")
Me.OleDbDASyn.Update(Me.DtsTest1, "Table_synonyme")
Me.DtsTest1.Clear()
Me.OleDbDABotanique.Fill(Me.DtsTest1.Table_botanique)
Me.OleDbDACITESEur.Fill(Me.DtsTest1.Table_CITES_européenne)
Me.OleDbDACITESInt.Fill(Me.DtsTest1.Table_CITES_internationale)
Me.OleDbDAFAmille.Fill(Me.DtsTest1.Table_famille)
Me.OleDbDAGenre.Fill(Me.DtsTest1.Table_genre)
Me.OleDbDAInfrk.Fill(Me.DtsTest1.Table_infrarang_spécifique)
Me.OleDbDAIUCN.Fill(Me.DtsTest1.Table_categorie_IUCN)
Me.OleDbDASyn.Fill(Me.DtsTest1.Table_Synonyme)
Me.OleDbDAVern.Fill(Me.DtsTest1.Table_nom_vernaculaire)
Me.DtsTest1.EnforceConstraints = True
NewLigne = Me.DtsTest1.Table_botanique.NewRow
NewLigne("NumBota") = Me.DtsTest1.Table_botanique.Count + 1
Me.DtsTest1.Table_botanique.Rows.Add(NewLigne)
Me.OleDbDABotanique.Update(Me.DtsTest1, "Table_botanique")
vue.Position = Me.DtsTest1.Table_botanique.Count
Me.TxtBxNewSp.Text = ""
End Sub

Pour le DataSet, j'utilise un dataset fortement typé.

Merci pour l'aide que vous pourrez m'apporter.

Botanique
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
3
Merci
OK.

Y a pas un problème d'intégrité référentielle de ta base au moment de la mise à jour??

Chris

N'oubliez pas de cloturer votre post.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 144 internautes nous ont dit merci ce mois-ci

Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
0
Merci
Salut



Quelle sont les requetes update/insert/delete de OleDbDABotanique?? Tu
as peut être d'autres DataAdapter pour remplir ton DataSet?

Et puis entre nous, je pense que
Me.OleDbDABotanique.Update(Me.DtsTest1, "Table_botanique")

ne met à jour que le table "Table_botanique". Fait aussi un essai sans rien préciser.

Chris

N'oubliez pas de cloturer votre post.
Messages postés
113
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
6 mars 2008
0
Merci
J'ai créé les DataAdapter (un par table) avec l'assistant de VS 2003. Par contre comme tu le dis, il est vrai que
Me.OleDbDABotanique.Update(Me.DtsTest1, "Table_botanique")
ne mets à jour qu la table "Table_botanique", c'est pourquoi, en dessous de cette instruction, il y a :
Me.OleDbDAVern.Update(Me.DtsTest1, "Table_nom_vernaculaire")
Me.OleDbDASyn.Update(Me.DtsTest1, "Table_synonyme")

Mais ces instructions ne fonctionnent pas. Voilà pourquoi je demande de l'aide.

Mais merci pour ta réponse.

Botanique
Messages postés
113
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
6 mars 2008
0
Merci
justement, l'idée m'est venue aussi et lorsque j'affiche le schéma et que je modifie les règles de mise à jour, que je les passe de "en cascade" à "(par défaut)", la mise à jour se fait sans problème.
Peux-tu m'expliquer pourquoi?

Merci de ton aide.

Botanique
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
0
Merci
Heuu, c'est à quel niveau (en fait sur quel objet) ta propriété Mise à jour en cascade?

Chris

N'oubliez pas de cloturer votre post.
Messages postés
113
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
6 mars 2008
0
Merci
Excuse moi pour ce manque de précision. Sous VS 2003, tu fais afficher le schéma des relation (fichier .xsd). De là tu as toutes les tables de ton DataSet ainsi que leurs relation. En sélectionnant une relation, avec le menu contextuel, tu choisi "modifier la relation". Un formulaire apparaît et là, tout en bas, tu peux choisir (par menu déroulant) les règles de mise à jour, les règles de suppressions et les règles d'acceptation/rejet.
Dans les règles de mise à jour, j'avais choisi "en cascade" et ma mise à jour ne marchais pas. Puis en la remplaçant pas "(par défaut)", la mise à jour s'effectue.

J'espère que je suis clair.

Amicalement

Botanique
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
0
Merci
Oui, tu es clair.

Par contre, côté objet je ne sais pas à quoi à ça correspond. Donc quel est l'impact sur la classe.

Regarde du coté de la classe généré par VS pour ton DataSet. Pour
"voir" cette classe, dans l'explorateur de solution, sélectionne
"Afficher tous les fichiers" (barre de menu en haut de l'explo de
solution). Tu déplois au niveau de ton DataSet et là il doit y avoir
une classe VB générée en automatique par VB. Faut voir dans cette
classe les modifs entre les deux options.

Chris

N'oubliez pas de cloturer votre post.
Messages postés
113
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
6 mars 2008
0
Merci
Ok, je vais regarder.

Merci pour ton aide précieuse.

Amicalement

Botanique