Probleme d'update d'une table dans un DataGridView vers une bd
Bonjour,
Bon ça fait 2 jours que ça fonctionne pas, j'ai cherché sur les forums et je n'arrive pas à régler mon problème. Je prends une chance de me faire dire "Va voir là c'est écrit mot pour mot", au moins ça réglera mon problème.
Voilà, j'ai une BD nommé Database1.sdf (type SQL CE). Dans cette BD j'ai une table "test". J'affiche cette table dans un DataGridView (DGV) sur la form "Tableau". Jusque là, tout va bien, mais pour votre compréhension voici le code d'affichage:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Public Shared Sub OuvrirTable(ByVal nom_table As String)
Dim DAstring As String = "SELECT * FROM " + nom_table
'connection vers Database1, close avant au cas ou elle serait ouverte
connection.Close()
connection.Open()
'fonction qui vérifie si la table existe avant de l'ouvrir
If BD.TableExistante(nom_table) = True Then
Try
'On prend tout ce qui est dans la table pour l'inclure dans le DA (DataAdapter)
Tableau.DA.SelectCommand = New SqlServerCe.SqlCeCommand(DAstring, connection)
Tableau.DA.Fill(Tableau.DataSet1, nom_table)
connection.Close()
Catch ex As Exception
MsgBox("Erreur SQL (2001):\n" + ex.Message.ToString, MsgBoxStyle.Exclamation, "Erreur")
End Try
'On modifie la fenêtre tableau pour y inclure le DS (DataSet)
With Tableau
.Show()
.Text = "Tableau de (" + nom_table + ")"
.BindingSource1.DataMember = nom_table
.BindingSource1.DataSource = Tableau.DataSet1
'Affichage dans le grid
.DataGridView1.DataSource = .BindingSource1
.DataGridView1.Name = nom_table
'J'empeche le remaniement de la table
For i = 0 To .DataGridView1.Columns.Count - 1
.DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next
End With
Else
MsgBox("Cette table n'existe pas!", MsgBoxStyle.Information, "Inexistante...")
End If
End Sub |
Bon de là ma table s'ouvre dans une DGV, je peux modifier les cases.
Ensuite mon problème arrive au moment de l'enregistrement. J'essai donc de valider les modifs et de les inclure dans Database1. Voici mon code (J'ai laissé en commentaire d'autres essais que j'ai fais):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| Public Shared Function EnregistrerTable(ByVal nom_table As String)
Dim flag As Boolean = False
'Dim DAString As String
'Tableau.DataSet1.AcceptChanges()
'DAString = "UPDATE " + nom_table
connection.Close()
connection.Open()
Try
'Tableau.DA.SelectCommand = New SqlServerCe.SqlCeCommand(DAString, connection)
'Tableau.DA.InsertCommand = New SqlServerCe.SqlCeCommand(dastring, connection)
Tableau.Validate()
Tableau.BindingSource1.EndEdit()
Tableau.DataSet1.AcceptChanges()
Tableau.DA.Update(Tableau.DataSet1.Tables(Tableau.DataGridView1.Name.ToString))
flag = True
connection.Close()
Catch ex As Exception
MsgBox("Erreur SQL (2002):\n" + ex.Message.ToString, MsgBoxStyle.Exclamation, "Erreur")
End Try
Return flag
End Function |
Voilà, le code ne génère aucune erreur, mais l'enregistrement ne se fait pas. J'ai suivi les modèles proposés par l'aide de VB, sans succès (validate, endedit, update).
Merci de m'éclairé!
JP