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 : 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
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 : 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
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