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

VB.NET Discussion :

update dataset et adapter


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 83
    Par défaut update dataset et adapter
    Bonjour. Je fait une application qui affiche, / update des info provennant d'un base ACCESS.

    Je dois utiliser la SQL connection string dans plusieur SUB, donc j"ai opter
    pour déclarer les variable PUBLIC.

    J'affiche une requete dasn un datagrid et je veut que l'usager modifie les valeurs. Je ne comprends pourquoi mon code n'update pas la basse de donné access.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Public Class MAIN
        Public con As New OleDb.OleDbConnection
        Public dbProvider As String
        Public dbSource As String
        Public ds As New DataSet
        Public da As OleDb.OleDbDataAdapter
        Public SQL As String
     
     
        Sub connection()
     
     
     
            Dim ip As String
            ip = My.Computer.Name
     
     
     
            dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
            If ip = "COTE-41F9E2EDFD" Then
                dbSource = "Data Source = U:\pmg\db\pmg dessin.mdb"
            Else
                dbSource = "Data Source = y:\daniel cote\db\pmg dessin.mdb"
            End If
            con.ConnectionString = dbProvider & dbSource
            con.Open()
     
    end sub
     
     
    Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
     
     
            Dim cb3 As New OleDb.OleDbCommandBuilder(da)
            da.Update(ds.Tables(0))
     
        End Sub
     
     Sub FiltreProjet_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FiltreProjet.SelectedIndexChanged
     
     
            FiltreSection.Text = ""
            FiltrePlan.Text = ""
            REMPLIR_FILTRE(FiltreProjet.Text, FiltreSection.Text, FiltrePlan.Text)
     
            sql = "SELECT * FROM bom WHERE LIGNE_BOM LIKE '" & FiltreProjet.Text & "-%'"
            da = New OleDb.OleDbDataAdapter(SQL, con)
            ds.Clear()
            ds.Reset()
            da.Fill(ds, "data")
     
     
                    countt = ds.Tables.Count
     
     
     
            DataGridView1.DataSource = ds.Tables(0)
     
     
        End Sub
     
     
     
     Sub FiltreProjet_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FiltreProjet.SelectedIndexChanged
     
     
            FiltreSection.Text = ""
            FiltrePlan.Text = ""
            REMPLIR_FILTRE(FiltreProjet.Text, FiltreSection.Text, FiltrePlan.Text)
     
            sql = "SELECT * FROM bom WHERE LIGNE_BOM LIKE '" & FiltreProjet.Text & "-%'"
            da = New OleDb.OleDbDataAdapter(SQL, con)
            ds.Clear()
            ds.Reset()
            da.Fill(ds, "data")
     
     
          DataGridView1.DataSource = ds.Tables(0)
     
     
        End Sub
    Pouver vous m'aider SVP
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    je pense qu'il manque des choses dans ta fonction "DataGridView1_CellValueChanged", comme recharger le DataSet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'On vide le DataSet et on le 'recharge' de nouveau.
     
    ObjetDataSet.Clear()
     
    ObjetDataAdapter.Fill(ObjetDataSet, "FICHEPATIENT")
     
    ObjetDataTable = ObjetDataSet.Tables("FICHEPATIENT")
    Extrait du cours de P. Lasserre


    regarde la partie Modifier un enregistrement du cours, je pense que tu trouvera des réponses

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 83
    Par défaut upater access avec dataadapter
    je viens de tester, et ca ne marche pas??

    C'est bizzard, ca marche la première fois que je roule le programme, ensuite, pas de update.

    Utiliser un recordset serait-il plus facile??

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 83
    Par défaut modfier une database via un datagridview
    SALUT

    Je cherche comment faire pour updater une database quand on modifie ses valeurs à l'aide d'un datagridview

    En effet, je viens de découvir que le dataset change quand on quitte la ligne de l'enrégistrement. mais que l'évenement DATAGRIDVIEW1_CELLCHANGED est exécuter avant que le curseur change de cellule.

    Situation #1

    Je modifie une cellule de la ligne 3, l'evenement DATAGRIDVIEW1_CELLVALUECHANGED est exécuté mais le dataset ne change pas. Ensuite, je modifie une cellule de la ligne 5. DATAGRIDVIEW1_CELLVALUECHANGED est exécuter mais le dataset utilise le changement de la ligne 3 seulement

    Situation #2

    Je modifie la cellule ligne 4 / collonne 2 , l'evenement DATAGRIDVIEW1_CELLVALUECHANGED est exécuté mais le dataset ne change pas. Ensuite, Je modifie la cellule ligne 4 / collonne 4 , l'evenement DATAGRIDVIEW1_CELLVALUECHANGED est exécuter, pas toujours pas de dataset changé.

    Situation #3

    Si j'utilise un bouton UPDATE, tout fonctionne car le focus QUITTE la ligne pour activer la bouton. Moi je veut me editer/update la database tout en restant dans le datagridview.


    Il y a surement un moyen pour updater une la database quand on bouge a l'intérieur d'une datagridview, et non pas ajouter un bouton UPDATE.


    merci de votre aide


    Voici le code que j'ulitise pour l'évenement DATAGRIDVIEW!_CELLCHANGED


    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
     
     
      Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
     
            Dim ds2 As New DataSet
            Dim cb As New OleDb.OleDbCommandBuilder(da)
     
            ds2 = ds.GetChanges        ' j'ai mis cette ligne pour m'aider a débugger
     
            If ds.HasChanges Then
                da.Update(ds, "DATA")
            End If
     
     
        End Sub

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Je pense que ce comportement est du au fait que l'on peu aussi ajouter une ligne dans un datagrid, et que ce serait mal venu qu'il essaye d'ajouter la ligne dans la dataTable avant qu'elle soie remplie vu qu'il doit vérifier les contraintes... Donc les changement ne sont répercuté que quand tu changes de ligne dans ton dataGridView.

    Maintenant pour essayer de résoudre ton problème, est-ce qu'en changeant par code le focus du gataGridView lors de ton DATAGRIDVIEW1_CELLVALUECHANGED cela ne changerait pas les données?

    (J'ai jamais testé car je préfère travailler en mémoire et tout comité en une fois avec demande de confirmation...)

Discussions similaires

  1. Forcer update Dataset
    Par timotep dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/08/2007, 17h13
  2. Update dataset Datagridview
    Par flatron dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/07/2007, 19h43
  3. [C#] update dataset
    Par drayif dans le forum C#
    Réponses: 2
    Dernier message: 16/07/2007, 14h18
  4. VB 2005 + Problème Update Dataset
    Par ghostlxl dans le forum VB.NET
    Réponses: 4
    Dernier message: 13/03/2007, 14h12
  5. [VB.Net] Comment updater Dataset avec un OledbCommandBuilder ?
    Par dyree dans le forum Accès aux données
    Réponses: 3
    Dernier message: 04/07/2006, 13h50

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