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

Accès aux données Discussion :

[VB.NET] Pb MAJ d'une table avec datagrid filtré


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut [VB.NET] Pb MAJ d'une table avec datagrid filtré
    Bonjour à tous,

    je développe une appli en vb.net qui communique avec une base de données sql server 2005.

    J'ai un datagrid qui affiche les données d'une table, c'est filtré sur la valeur d'un de mes champs. A noter que filtrer un datagrid je n'arrive à le faire qu'avec du code mais bon.

    J'ai donc mon datagrid filtrer mais je voudrais que l'utilisateur puisse modifier ou supprimer des lignes et que qd il clique sur le bouton OK la table soit mise à jour, mais je n'y arrive pas, je n'ai pas de messages d'erreurs et pourtant ma table n'est pas mise à jour.

    Voilà mon code si vous pouviez m'aider, peut etre que je ne m'y prend pas du tout comme il faut, mon but est d'avoir un datgrid qui affiche une table filtrée et qui puisse estre mise à jour via le datagrid

    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
    Dim ObjetConnection As SqlConnection
            Dim ObjetCommand As SqlCommand
            Dim ObjetDataAdapter As SqlDataAdapter
            Dim ObjetDataSet As New DataSet()
            Dim matable As New DataTable
            Dim ObjetDataTable As DataTable
            Dim strSql As String
            Dim strConn As String
            strConn = "Persist Security Info=False;Integrated Security=SSPI;database=BaseTest;data source=S001"
            strSql = "Select * from UC Where NomClient = '" & Bienvenue.ComboClient3.SelectedItem & "'"
            ObjetConnection = New SqlConnection()
            ObjetConnection.ConnectionString = strConn
            ObjetConnection.Open()
            ObjetCommand = New SqlCommand(strSql)
            ObjetDataAdapter = New SqlDataAdapter(ObjetCommand)
            ObjetCommand.Connection() = ObjetConnection
            ObjetDataAdapter.Fill(ObjetDataSet, "UC")
            ObjetDataTable = ObjetDataSet.Tables("UC")
            matable = ObjetDataSet.Tables("UC")
            DataGrid2.DataSource = matable
            ObjetConnection.Close()
    Et voilà le code du boutton OK :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     UCTableAdapter.Update(BaseTestDataSet)
            Me.Close()
    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    il faut ajouter les requêtes pour les mises à jour a ton dataadapter (propriétés InsertCommand, DeleteCommand, UpdateCommand)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    Merci d'avoir répondu

    le problème c'est que je ne comprends pas trop ce que tu me dis, je vois pas ce qu'il faut que je fasse.

    Malgré ça j'arrive qd mm à avoir une question il faut je fasse à la main les requetes insert into .... ? parce que si c'est ça je ne peux pas, je ne sais pas quelle ligne l'utilisateur va vouloir modifier ou supprimer et par quelles données...

    voilà s'il y a encore quelqu'un pour m'aider merci d'avance

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    je suis désolée mais je ne comprends toujours pas, j'ai utilisé un commandBuilder mais ça ne change rien, pour les propriétés insertcommand.... je ne vois pas qu'elle valeur je dois leur mettre.

    Si c'était possible d'avoir plus d'explications, merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    S'il vous plaît est ce que quelqu'un peut m'aider, je rappelle que je voudrais avoir un datagrid qui filtre les données et qui permette de modifier ou supprimer des lignes.

    Sans le code j'arrive à faire les mises à jour mais à pas filtrer et avec le code j'arrive à filtrer ma table mais pas à la mettre à jour.

    Toutes les idées sont les bien venues, merci.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Points : 451
    Points
    451
    Par défaut
    Bonjour,
    Solution d'une mise à jour dans le code
    lier le datagrid à une dataview que tu peux filtrer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     dim DTAV as new dataview
      dataview.table = matable
      dataview.filter = "condition de filtre"
            DataGrid2.DataSource = DTAV
    Faire les modif dans le datagrid
    lors du click sur OK
    récuperer les lignes modifiées, supprimées
    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
     
     dim DTAVMaj as dataview
      dim DTARV as datarowview
      dtavmaj.table = matable
          DTAVMaj.RowStateFilter = DataViewRowState.Added Or DataViewRowState.Deleted Or DataViewRowState.ModifiedCurrent
          For Each DTARV In DTAVmaj
    'dtarv contient la ligne ajoutée, modifiée ou supprimée
            Select Case DTARV.Row.RowState
              Case DataRowState.Added           'ajouter 
     
                 'requête d'ajout à exécuter avec un execnonquery
               Case DataRowState.Deleted           'supprimer 
                'requête sql de suppression
              Case DataRowState.Modified          'modifier 
         'requête de mise à jour à exécuter avec un execnonquery
           end select
        next
    Pour utiliser le dataadapter, le plus facile est d'utiliser l'assistant qui crée automatiquement les requêtes insert, update, delete.
    (Vérifie le code car j'ai tapé de mémoire)
    Bon boulot
    Jean

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup pour cette réponse
    je l'ai tappé en la modifiant un peu parce que'il y avait des lignes qui lui plaisait pas

    mais je l'ai pas encore testée car pour le moment il ne me prend pas ma condition pour le filtre, d'ailleurs je n'ai pas pu mettre
    dataview.filter = "condition de filtre"
    mais
    dataview.rowfilter = "condition de filtre"
    si j'ai bien compris c'est bon.

    tant qu'à faire autant mettre le code, s'y jamais quelqu'un voit tout de suite ce qui va pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DTAV.RowFilter = "dbo.UC.NomClient = '" & Bienvenue.ComboClient3.SelectedItem & " '"
    et il me dit :
    Impossible de trouver la colonne [dbo.UC.NomClient].

    Donc je cherche pour la condition....
    Merci encore

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 80
    Points
    80
    Par défaut
    En fait ce n'était pas la condition du filtre mais un pb de connection qui ne se faisait pas comme il faut, donc maintenant ça marche pour la requete de modification (update...) mais pas pour celle de suppression.

    Impossible d'accéder via la ligne aux informations de ligne supprimées.

    j'utilise dans ma requete : DataRowView.Row.Item(nom_de_la_colonne)


    Je comprend bien ce qu'il me dit, mais faut bien que je la supprime de ma table la ligne

    Si quelqu'un passe par là.....
    Merci

Discussions similaires

  1. Mesurer taille d'une table avec un filtre
    Par Saduina dans le forum Administration
    Réponses: 3
    Dernier message: 15/10/2013, 10h28
  2. Réponses: 5
    Dernier message: 08/04/2008, 09h54
  3. MAJ d'un champ d'une table avec condition sur clef primaire commune
    Par ar|equin dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/05/2007, 13h57
  4. MAJ d'une table avec deux liens
    Par alaingui dans le forum Access
    Réponses: 3
    Dernier message: 16/01/2007, 16h19
  5. Réponses: 2
    Dernier message: 02/05/2006, 09h50

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