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

Signaler
Messages postés
134
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
17 octobre 2010
-
Messages postés
134
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
17 octobre 2010
-
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

Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
1
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.
Messages postés
134
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
17 octobre 2010

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")