-
Mise a jour datagridview
Salut
(mon projet c gestion d'une ecole:les outilles utilisés:VS2005+Sql server 2000
bon voila mon prbléme:j'ai besoin d emettre à jour mes données stocké dans la base de donnée apartir d'une datagridview.j déja essayer ça et ca marche mais pas tt le temps
parexemple :j'ai une table module(num-module,libellé-module) pour afficher les données de cette table dans la gridview c simple aussi pr la mise à jour ca marche voila le code
"" myconex.Open()
command = New SqlCommand(select *from module, myconex)
adapter = New SqlDataAdapter(command)
adapter.Fill(dataset, table)
grid.DataSource = dataset.Tables(table) ""
Mais dans le cas ou je ve extraire de sinfos a partir du differents tables (besoin de jointure et procédure stocké pr l'affichage de ces infos dans la gridview)
"code utilisé:" myconex.Open()
command = New SqlCommand(affiche-eleve, myconex)
adapter = New SqlDataAdapter(command)
adapter.Fill(dataset, table)
grid.DataSource = dataset.Tables(table)"
N.B=> affiche-eleve c la procédure stocké ke j la fait pour afficher mes infos car ils sont séparer j besoin de jointure
dans ce cas je ne vien pas de mettre à jour ma base de donné il m'a donne l'error sur la procédure il ne peut pa mettre à jour a partir de cette dérnier !
doonc svp j besoin d evotre aide vraiment je ss bloké dans cette partie et j'ai besoin de ça
je vs attend merci d'avance
-
Bonjour.
Tu ne peux pas faire simplement de mises à jour à partir d'une datatable d'un dataset issue d'un jointure.
Donc, soit tu travailles sur une seule table, soit tu codes la procédure de MAJ à la main.
PS : Attention au style quand tu postes... une petite relecture ne fait pas de mal.
Cdt.
-
Merci pour votre attention
mais je ne peu pas laisser les autres table je suis obligé de les affiché et de les mettre à jour.bon je vé t'explique encore ma situation.j'ai un formulaire contient une DatagridView dans cette dérnier je doi afficher les infos stocké dans la table éleve(N°,nom,prénom,Tél,Group,"(Branche,niveau :sont stocké dans les tables niveau et branche)") voila la procédure ki affiche ça:
CREATE procedure affeleve
as
SELECT dbo.eleve.[n°eleve], dbo.eleve.nom, dbo.eleve.prenom, dbo.eleve.Adress, dbo.eleve.Tél, dbo.eleve.[date inscription], dbo.branche.branche,
dbo.niveau.niveau, dbo.groups.[libellé]
FROM dbo.branche INNER JOIN
dbo.groups ON dbo.branche.[n°branche] = dbo.groups.[n°branche] INNER JOIN
dbo.eleve ON dbo.groups.[n°group] = dbo.eleve.[n°group] INNER JOIN
dbo.niveau ON dbo.groups.[n°niveau] = dbo.niveau.[n°niveau]
j'ai pas des probléme dans l'affichage tt va bien
mais j'ai besoin de mettre à jour ma base d e donnée on sais ke DataGridViw permet l'utilisateur dinsere de modifier ou de supprimer un enregistrement et donc dans ce cas je n'arrive pas a réaliser ca car j une procédure stocké et j'ai besoin d eplisiuer table
mais dans le cas contraire quand j'ai les infos stockés dans la même table j trouvé la solutin voila le code
"" Dim matable As DataTable = dataset.Tables(table)
Dim cmdbuild As SqlCommandBuilder
cmdbuild = New SqlCommandBuilder(adapter)
adapter.UpdateCommand = cmdbuild.GetUpdateCommand
adapter.InsertCommand = cmdbuild.GetInsertCommand
adapter.DeleteCommand = cmdbuild.GetDeleteCommand
Dim tans As SqlTransaction = myconex.BeginTransaction
adapter.UpdateCommand.Transaction = tans
adapter.InsertCommand.Transaction = tans
adapter.DeleteCommand.Transaction = tans
Try
adapter.Update(matable)
tans.Commit()
matable.AcceptChanges()
adapter.Update(dataset, table)
MessageBox.Show("l'opération effectuer ", "msgbox Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As SqlException
tans.Rollback()
matable.RejectChanges()
MessageBox.Show(ex.Message, "msgbox Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try ""ca marche bien quan je ve affiicher les branche(n°branche,libellé branche)dans la datagridview et aussi je vien de mettre à jour cette ta blae a partir des modification ke j'effectué dans la DGRVW (par ce code )
j'epére ke tu m'a bien comprend maintenat
que ce que je doi fiare SVP
-
Re.
J'ai bien compris ton probléme, mais comme je le disais, ça n'est pas possible de mettre à jour une datatable issue de jointure.
Au vue de ton code SQL, je te conseille d'utiliser des colonnes DataGridViewComboBoxColumn pour afficher la branche, le niveau et le libellé du group.
Ainsi, tu te limiteras à l'utilisation d'une seule table, la table élève.
Cdt.
-
Re
Merci bcp
la vérité je suis une débutante j jamias utilisé ce contrôle mais je vé essayer maintenat tu peu mieux m'expliquer comment je vé faire
je te remercie enormément
-
Ouah, çà pique les yeux l'orthographe là :D