Update Rows

cs_Jielde Messages postés 226 Date d'inscription mardi 17 octobre 2000 Statut Membre Dernière intervention 1 décembre 2010 - 22 juin 2010 à 17:26
cs_Jielde Messages postés 226 Date d'inscription mardi 17 octobre 2000 Statut Membre Dernière intervention 1 décembre 2010 - 28 juin 2010 à 10:17
Bonjour,

Voila, j'ai un problème et j'essaye de le résoudre depuis plusieurs jours sans rien trouvé.

Je me connecte à une base de donnée SQL Server Express.

Voici mon code :

###################################################################
[Dans un module]
Public conn As New SqlConnection("data source=192.168.1.15;initial catalog=Prospect;uid=Server;pwd=")

Public ProspectTable As New DataTable
Public ProspectTableAdapter As New SqlDataAdapter("SELECT * FROM Prospect", conn)

Public RepresentantTable As New DataTable
Public RepresentantTableAdapter As New SqlDataAdapter("SELECT * FROM Representant", conn)

Public myDataset As New Data.DataSet
###################################################################

###################################################################
[Dans une Form_Load]
ProspectTable.TableName = "Prospect"
RepresentantTable.TableName = "Representant"

conn.Open()

ProspectTableAdapter.Fill(myDataset, "Prospect")
RepresentantTableAdapter.Fill(myDataset, "Representant")

ProspectBindingSource.DataSource = myDataset.Tables("Prospect")
RepresentantBindingSource.DataSource = myDataset.Tables("Representant")
###################################################################

###################################################################
[Pour modifier une entrée]
myDataset.Tables("Representant").Rows(0)("Config_Columns") = "100"
RepresentantTableAdapter.Update(myDataset, "Representant")
###################################################################

Et là j'ai une erreur : "Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées."

Pouvez-vous m'aider car je commence à plus avoir de cheveux sur la tête ;)

Merci.

8 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
22 juin 2010 à 19:14
Salut,

Le message est clair et en francais ;-)

L'adapteur demande une updatecommande

RepresentantTableAdapter.UpdateCommand = "Up...."

Bases toi sur le lien suivant
http://forum.hardware.fr/hfr/Programmation/CNET-managed/utilisation-updatecommand-dataadapter-sujet_45812_1.htm

Bon dev.
0
cs_Jielde Messages postés 226 Date d'inscription mardi 17 octobre 2000 Statut Membre Dernière intervention 1 décembre 2010
22 juin 2010 à 21:52
Merci pour ta réponse nhervagault,

Mais tu va peut être pouvoir m'aider a nouveau.

j'ai ajouter ceci

RepresentantTableAdapter.TableMappings.Add("Representant", "Representant")
'RepresentantTableAdapter.UpdateCommand New SqlClient.SqlCommand("UPDATE Representant SET User @User, Password = @Password, Fonction = @Fonction, Locked = @Locked, Icone = @Icone, Config_Columns = @Config_Columns, Nom_Prenom = @Nom_Prenom WHERE ID = @ID)", conn)

RepresentantTableAdapter.UpdateCommand.Parameters.Add("@ID", System.Data.DbType.Int32, 4, "ID")
RepresentantTableAdapter.UpdateCommand.Parameters.Add("@Nom_Prenom", System.Data.DbType.String, 50, "Nom_Prenom")
RepresentantTableAdapter.UpdateCommand.Parameters.Add("@User", System.Data.DbType.String, 10, "User")
RepresentantTableAdapter.UpdateCommand.Parameters.Add("@Password", System.Data.DbType.String, 10, "Password")
RepresentantTableAdapter.UpdateCommand.Parameters.Add("@Fonction", System.Data.DbType.String, 10, "Fonction")
RepresentantTableAdapter.UpdateCommand.Parameters.Add("@Locked", System.Data.DbType.Boolean, 2, "Locked")
RepresentantTableAdapter.UpdateCommand.Parameters.Add("@Icone", System.Data.DbType.String, 10, "Icone")
RepresentantTableAdapter.UpdateCommand.Parameters.Add("@Config_Columns", System.Data.DbType.String, 10, "Config_Columns")


juste avant :
ProspectTableAdapter.Fill(myDataset, "Prospect")
RepresentantTableAdapter.Fill(myDataset, "Representant")


Mais au moment de faire l'update j'ai ce message :
Échec de la conversion de la valeur de paramètre d'un String en un Int16.


Je ne comprends plus rien, j'ai pas de valeur int16

Voici l'update de ma table que j'ai récupéré sur SQL Server Management.
UPDATE [Prospect].[dbo].[Representant]
   SET [Nom_Prenom] = <Nom_Prenom, nvarchar(50),>
      ,[User] = 
      ,[Password] = 
      ,[Fonction] = <Fonction, nvarchar(10),>
      ,[Locked] = <Locked, bit,>
      ,[Icone] = 
      ,[Config_Columns] = <Config_Columns, ntext,>
 WHERE <Conditions de recherche,,>


Merci pour ton aide.
0
cs_Jielde Messages postés 226 Date d'inscription mardi 17 octobre 2000 Statut Membre Dernière intervention 1 décembre 2010
22 juin 2010 à 21:53
Pardon, la ligne :

RepresentantTableAdapter.UpdateCommand = New SqlClient.SqlCommand(...)

n'est pas en commentaire comme indiquer dans mon exemple.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
22 juin 2010 à 22:44
Merci pour toutes les indications.

Mais je ne vois pas ou le problème est

je pense que c'est la clé primaire id qui doit poser problème après pour comprendre pourquoi je ne vois pas.

Mets la clef en int16 et de taille 2 par exemple?

Essaie d'utiliser l'assistant dataset pour faire la requete par exemple.

Bon dev
0

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

Posez votre question
cs_Jielde Messages postés 226 Date d'inscription mardi 17 octobre 2000 Statut Membre Dernière intervention 1 décembre 2010
22 juin 2010 à 23:04
Encore merci pour ton aide.

Bon j'ai testé avec ceci New SqlClient.SqlParameter() :
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@ID", SqlDbType.Int, 4, "ID"))
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@Nom_Prenom", SqlDbType.NVarChar, 50, "Nom_Prenom"))
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@User", SqlDbType.NVarChar, 10, "User"))
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@Password", SqlDbType.NVarChar, 10, "Password"))
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@Fonction", SqlDbType.NVarChar, 10, "Fonction"))
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@Locked", SqlDbType.Bit))
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@Icone", SqlDbType.NVarChar, 10, "Icone"))
RepresentantTableAdapter.UpdateCommand.Parameters.Add(New SqlClient.SqlParameter("@Config_Columns", SqlDbType.NText))


j'ai plus de message d'erreur lors de l'update par contre rien ne change dans la base de donnée, sa n'enregistre rien ???

Là je suis completement chauve :)
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
22 juin 2010 à 23:44
Ok
C'est une base sql server local (sdf) ou express ou autre (mdf)

Essaies de lancer l'update commande a partir d'une commande sqlcommande en sqldirect
et pas avec un dataset dans un premier temps pour tester cette commande.
0
cs_Jielde Messages postés 226 Date d'inscription mardi 17 octobre 2000 Statut Membre Dernière intervention 1 décembre 2010
23 juin 2010 à 00:13
Alors c'est une base SQL Server Express à distance :

SqlConnection("data source=192.168.1.15;initial catalog=Prospect;uid=Server;pwd=") 


Via SQL Server Managers je peut faire des modifs de mes données sans problème.

Sinon pour ta demande je débute en sql donc je ne sais pas comment faire.
0
cs_Jielde Messages postés 226 Date d'inscription mardi 17 octobre 2000 Statut Membre Dernière intervention 1 décembre 2010
28 juin 2010 à 10:17
Salut,

Bon j'ai fini par trouver pourquoi rien ne s'enregistrait.

Dans :
Public ProspectTableAdapter As New SqlDataAdapter("SELECT * FROM Prospect", conn)


il faut ajouter :

Public ProspectTableAdapter As New SqlDataAdapter("SELECT * FROM Prospect; SET IDENTITY_INSERT Representant ON", conn)
0
Rejoignez-nous