Vb.net et update d'une base de donnée

trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010 - 18 juil. 2005 à 11:42
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010 - 18 juil. 2005 à 12:07
Bonjour tout le monde,
je bloqe désespérément depuis deux semaines sur un problème d'update avec oledbcommand...si quelqu'un pouvait me donner un coup de pouce ca m'éviterait de rendre un programme vide a la fin de mon stage!

J'obtiens le message d'erreur suivant :
"update requiert un insertcomand valide lors du passage de la collection datarow avec de nouvelles lignes"

Voici le code :

NewLigne = memoire.Tables(
"Couple").NewRow


NewLigne(0) =
String.Concat(
"couple",
CType(j,
String))


NewLigne(1) =
CType(abs,
String)



' Création de la nouvelle ligne
memoire.Tables(
"Couple").Rows.Add(NewLigne)

Dim requete
As
String =
"SELECT * FROM Couple"
liaison =
New OleDbDataAdapter(requete, base)

Dim CmdBuild =
New OleDb.OleDbCommandBuilder(liaison)
liaison.InsertCommand = CmdBuild.GetInsertCommand

liaison =
New OleDbDataAdapter(requete, base)
liaison.Update(memoire,
"Couple")

2/ Si vous ne connaissez pas oledbcommand, je peux passer par l'execution de requete (mais j'aimerais éviter car je ne connais pas bien sql) quelle genre de requete dois je utiliser pour faire un update d'un datagrid avec un bouton "OK" (en prenant en compte les mofids, ajout, suppression de ligne)?

Encore merci de me dépatouiller de cette galère...

2 réponses

scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
18 juil. 2005 à 11:57
Hello !

Je développe depuis 2 ans maintenant (que ça passe vite...) sous VB.NET.

Au début, j'ai essayé comme toi d'utiliser "update" pour synchroniser un dataset avec une base de donnée, mais c'est très rapidement l'ENFER !

Donc, comme tu le précises, il est 10000 fois mieux d'utiliser un object command avec une requete sql (bien sur, c'est mon avis perso, et cela n'engage que moi...)

Donc ta requete devrais prendre la forme : (de tete, je ne suis pas sur à 100% de la syntaxe)

dim cmd as new oledbcommand
cmd.connection = maconnection
cmd.commandtext = "Insert into Couple(champ1,champ2,champ3,etc..) values('" & ma_valeur1 & "','" & ma_valeur2 & "','" & etc... & "')"
cmd.executenonquery

Et voilà ! C ajouté.

Bon courage !

Seb.
0
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010
18 juil. 2005 à 12:07
Merci pour ta reponse qui me fait poser deux questions bêtes de debutant en base de donnée :
Cette requete va insérer toute les données du datagrid? (elle ne va pas insérer seulement les nouvelles lignes?
cette requete va t'elle prendre en compte les champs modifiés par l'utilisateur (champ issues de la bd et presents sur le datagrid ) ?

Au fait j'ai introduit une erreur dans mon precedent post :
J'obtiens le message d'erreur suivant :
"erreur de syntaxe ds l'instruction insert into"

Voici le code :

NewLigne = memoire.Tables(
"Couple").NewRow


NewLigne(0) =
String.Concat(
"couple",
CType(j,
String))


NewLigne(1) =
CType(abs,
String)



' Création de la nouvelle ligne
memoire.Tables(
"Couple").Rows.Add(NewLigne)

Dim requete
As
String =
"SELECT * FROM Couple"
liaison =
New OleDbDataAdapter(requete, base)

Dim CmdBuild =
New OleDb.OleDbCommandBuilder(liaison)
liaison.InsertCommand = CmdBuild.GetInsertCommand

' a supprimer liaison = New
OleDbDataAdapter(requete, base)
liaison.Update(memoire,
"Couple")
0