IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Probleme d'update d'une table dans un DataGridView vers une bd


Sujet :

Windows Forms

  1. #1
    Membre averti Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Points : 305
    Points
    305
    Par défaut 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 : 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

  2. #2
    Membre du Club Avatar de saraenim
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Salut, je pense que ton probléme est la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau.DA.Update(Tableau.DataSet1.Tables(Tableau.DataGridView1.Name.ToString))
    essai de voir avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i = 0 to X-1 ('x le nombbre de ligne de ton DGV)
    for j = 0 to n-1('n le nombre de colonne)
    Tableau.DA.Update(Tableau.DataSet1.Tables(Tableau.DataGridView1.rows(i).cells(j).value.ToString))

  3. #3
    Membre averti Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Points : 305
    Points
    305
    Par défaut
    Citation Envoyé par saraenim Voir le message
    Salut, je pense que ton probléme est la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau.DA.Update(Tableau.DataSet1.Tables(Tableau.DataGridView1.Name.ToString))
    essai de voir avec
    [CODE]
    Je ne crois pas car ce qu'il faut passer en paramètres du dataset1.tables() c'est le nom de la table à updater, et non chaque case. J'ai tout de même essayer, sans succès.

    Merci tout de même

  4. #4
    Membre averti Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Points : 305
    Points
    305
    Par défaut Victoire!
    Bonjour,

    En relisant pour une xème fois le tuto de P.Lasserre (qu'il est utile ce tuto), j'ai finalement trouvé ce que je voulais...

    Pour la postérité:

    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
        Public Shared Function EnregistrerTable(ByVal nom_table As String)
            Dim flag As Boolean = False
     
            connection.Close()
            connection.Open()
     
            Try
                Dim objetCB = New SqlServerCe.SqlCeCommandBuilder(Tableau.DA)
                Tableau.DA.Update(Tableau.DataSet1, nom_table)
                Tableau.DataSet1.Clear()
                Tableau.DA.Fill(Tableau.DataSet1, nom_table)
                connection.Close()
                flag = True
            Catch ex As Exception
                MsgBox("Erreur SQL (2002):\n" + ex.Message.ToString, MsgBoxStyle.Exclamation, "Erreur")
            End Try
     
            Return flag
     
        End Function
    Et Voilà!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2009, 16h55
  2. Réponses: 3
    Dernier message: 15/10/2008, 09h24
  3. Réponses: 4
    Dernier message: 11/07/2007, 11h52
  4. Réponses: 3
    Dernier message: 15/06/2007, 22h50
  5. Pointeur vers une table dans une fonction
    Par Chatbour dans le forum Oracle
    Réponses: 2
    Dernier message: 03/05/2007, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo