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:
Bon de là ma table s'ouvre dans une DGV, je peux modifier les cases.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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):
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci de m'éclairé!
JP
Partager