Problème avec DataAdapter [Résolu]

cs_Papymuzo 169 Messages postés jeudi 24 juillet 2003Date d'inscription 17 août 2010 Dernière intervention - 2 mai 2009 à 15:55 - Dernière réponse : cs_Papymuzo 169 Messages postés jeudi 24 juillet 2003Date d'inscription 17 août 2010 Dernière intervention
- 3 mai 2009 à 22:12
Bonjour à tous et à toutes,

Je poste ici ce message suite à un problème que je n'arrive pas à résoudre et qui me bloque complètement.

Lorsque j'essaie de faire un Update d'un DataSet vers une base Access, j'ai un message d'erreur que voici :

"DataColumn 'SAISON' manquant dans DataTable 'TCompanie' pour SourceColumn 'SAISON'
.

Ce message apparaît dans ces lignes de code :

-----
-----

'On cree une nouvelle ligne
objetDataRow = objetDataSet.Tables("TCompanie").NewRow()

'On definit les valeurs de chaque champ
objetDataRow.Item("NOM") = Me._AjoutCompanieNom
objetDataRow.Item("ADRESSE") = Me._AjoutCompanieAdresse
objetDataRow.Item("CONTACT") = Me._AjoutCompanieContact
objetDataRow.Item("TEL") = Me._AjoutCompanieTel
objetDataRow.Item("SITE_WEB") = Me._AjoutCompanieSite

'On ajoute la ligne au DataSet
objetDataSet.Tables("TCompanie").Rows.Add(objetDataRow)

'Pour modifier les valeurs changees dans le DataAdapter
objetCommandBuilder = New OleDbCommandBuilder(objetDataAdapter)

'Mise a jour vers la base
objetDataAdapter.Update(objetDataSet, "TCompanie") /!\ ERREUR /!\

'On vide le DataSet et on le 'recharge' de nouveau.
objetDataSet.Tables("TCompanie").Clear()
objetDataAdapter.Fill(objetDataSet, "TCompanie")

-----
-----

Je ne comprends pas pourquoi j'ai un tel message, car dans ma table TCompanie, aucun champ n'a le nom "SAISON".

Pour information, dans mon DataSet je récupère les tables de ma base de données et je fait les relations entre elles. Il se trouve qu'une table nommée TDate possède un champ 'SAISON', mais elle n'a aucun lien avec la table TCompanie...

A votre avis, d'où cela peut-il venir ?

Merci énormément d'avance,

-Papymuzo-
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
cs_Papymuzo 169 Messages postés jeudi 24 juillet 2003Date d'inscription 17 août 2010 Dernière intervention - 3 mai 2009 à 22:12
1
Merci
J'ai trouvé la solution à mon problème !

Pour ceux que sa intéresse ou pour les futures personnes qui auraient le même problème que moi, voici la solution :

Prenons un exemple avec deux tables T1 et T2.

Si l'on prend un objetCommand (OledbCommand) et un seul, on devra faire une première requête pour la T1 et une seconde pour la T2 afin de récupérer le contenu des tables (ce qui est normal).

Or, si l'on veut faire une update pour T1, l'erreur apparaîtra. Pourquoi ? Parce que la commande "garde en mémoire" la dernière requête SQL effectuée (donc celle pour T2 !).

Ainsi, si l'on fait :

objetCommand = New OledbCommand("SELECT * FROM T1")
... remplissage du DataSet ...
objetCommand = New OledbCommand("SELECT * FROM T2")
... remplissage du DataSet ...

=> On a les deux tables dans le DataSet.

Si l'on veut modifier T1, on devra faire :

objetCommand = New OledbCommand("SELECT * FROM T1"), afin de "retrouver" la requête SQL qu'on a utilisé pour remplir la table.

Voila ;)

En espérant avoir été utile,

-Papy-

Merci cs_Papymuzo 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_Papymuzo

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.