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 :

Recharger un DataTable


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut Recharger un DataTable
    Bonjour,

    J'execute une requête "DELETE" sur ma table. L'enregistrement est bien supprimer dans la table Access.

    Je n'arrive pas à recharger le DataTable pour afficher les enregistrements

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim sRequete As String = "delete FROM C_62_30092007 WHERE I_IdClient = 3207" ', "cl25m.mdb", "Concours"
     
          Cl25m_Command.CommandText = sRequete
          Cl25m_DataAdapter.InsertCommand = Cl25m_Command
          Cl25m_DataAdapter.InsertCommand.ExecuteNonQuery()
     
          MsgBox(Cl25m_DataTable.Rows.Count())
     
          Me.dgvTest.Rows.Clear()
          RempliGrid()
    Après l'éxecution de la requête mon DataTable.rows.count est le même qu'avant le DELETE.

    Merci d'avance
    FikoU

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Vu ta façon de procéder, ce n'est pas la peine d'utiliser un DataAdapter... tu peux faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cl25m_Command.ExecuteNonQuery()
    Sinon, il faudrait que tu montres le code de RempliGrid pour qu'on puisse voir où est le problème

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Merci Tomlev,
    Voici le code de rempligrid :

    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
     
    Public Sub RempliGrid()
          Dim i As Integer
     
          For i = 0 To Clients_DataTable.Rows.Count() - 1
             dgvClients.Rows.Add(Clients_DataTable.Rows(i).Item("C_NumClient"), _
             Trim(Clients_DataTable.Rows(i).Item("C_RaisonSociale")), _
             IIf(IsDBNull(Clients_DataTable.Rows(i).Item("C_NomClient")), "", Clients_DataTable.Rows(i).Item("C_NomClient")) & " " & _
             IIf(IsDBNull(Clients_DataTable.Rows(i).Item("C_PrenomClient")), "", Clients_DataTable.Rows(i).Item("C_PrenomClient")), _
             IIf(IsDBNull(Clients_DataTable.Rows(i).Item("C_NomResponsable")), "", Clients_DataTable.Rows(i).Item("C_NomResponsable")) & " " & _
             IIf(IsDBNull(Clients_DataTable.Rows(i).Item("C_PrenomResponsable")), "", Clients_DataTable.Rows(i).Item("C_PrenomResponsable")), _
             IIf(IsDBNull(Clients_DataTable.Rows(i).Item("C_Npa")), "", Clients_DataTable.Rows(i).Item("C_Npa")), _
             IIf(IsDBNull(Clients_DataTable.Rows(i).Item("C_Localite")), "", Clients_DataTable.Rows(i).Item("C_Localite")), i)
     
             Select Case Clients_DataTable.Rows(i).Item("C_Couleur")
                Case 1
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightYellow
                Case 2
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightCoral
                Case 3
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen
                Case 4
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightSkyBlue
             End Select
     
          Next
       End Sub
    J'ai eesayé un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cl25m_Command.ExecuteNonQuery()
    mais j'ai le même prob.
    FikoU

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    oulala... alors :
    1. tu te compliques beaucoup la vie pour rien : pour remplir un DataGridView avec le contenu d'un DataTable, pas la peine de le faire manuellement, il suffit de faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dgvClients.DataSource = Clients_DataTable
    Les modifs dans le DGV seront reportées sur la DataTable, et inversement.

    2. le contenu de ta DataTable n'est jamais modifié dans ton code... tu supprimes les lignes de la grille, mais tu ne touches pas au DataTable

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Re,

    Je rempli mon DGV de cette fçon car, et c'est un peu spécial, je repend une organisation manuelle, les fourres des dossiers des clients sont de différentes couleurs (5 couleurs).
    Je change le backcolor de la ligne du DGV en fonction de la couleur des fourres actuelles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Select Case Clients_DataTable.Rows(i).Item("C_Couleur")
                Case 1
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightYellow
                Case 2
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightCoral
                Case 3
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen
                Case 4
                   dgvClients.Rows(i).DefaultCellStyle.BackColor = Color.LightSkyBlue
             End Select
    Donc je suis obligé de remplir mon DGV de cette façon
    FikoU

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par fikou Voir le message
    Donc je suis obligé de remplir mon DGV de cette façon
    Non, tu peux très bien faire le binding avec le DataSource puis parcourir les lignes pour changer leur couleur...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    salut Tomlev,
    Merci pour tes réponses.

    La méthode que tu me suggère comporte quand même une boucle, c'est plus rapide que ma méthode

    FikoU

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par fikou Voir le message
    La méthode que tu me suggère comporte quand même une boucle, c'est plus rapide que ma méthode
    Non, mais ça a l'avantage de fonctionner
    Par contre, plutôt que de boucler sur toutes les lignes, tu peux gérer l'évènement RowPrePaint pour déterminer la couleur de la ligne. Et dans ce cas là c'est plus rapide

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Re,

    Merci , je vais tester tout ça !!!

    Connait pas RowPrePaint
    Ici ce n'est pas le cas mais dans une boucle je peut formater les données de certain champs de ma table !!! peut ton définir un format pour une colonne d'un DGV.

    FikoU

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par fikou Voir le message
    Connait pas RowPrePaint
    Moi non plus
    Mais il suffit de regarder la doc pour en savoir plus ...
    http://msdn.microsoft.com/fr-fr/libr...wprepaint.aspx

    Citation Envoyé par fikou Voir le message
    Ici ce n'est pas le cas mais dans une boucle je peut formater les données de certain champs de ma table !!! peut ton définir un format pour une colonne d'un DGV.
    Si tu veux mettre une couleur différente par colonne et non par ligne, dans ce cas RowPrePaint n'est pas vraiment adapté... dans ce cas tu peux le faire colonne par colonne, ou gérer l'évènement CellPainting pour définir la couleur pour chaque cellule.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Bonjour tomlev,

    Tu as dit :
    Le contenu de ta DataTable n'est jamais modifié dans ton code... tu supprimes les lignes de la grille, mais tu ne touches pas au DataTable

    comment fait on pour rafraichir/réinitialiser le Datatable.

    @+FikoU

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Bonjour,

    Jusqu'à mainteneant l'exemple de P. Lasserre me suffisait, mais j'ai compris que cela est plus complexe.

    Bon il va falloir adater l'exemple pour Access.
    Une petite chose, je n'ai jamais réussi à afficher la console, y à il une astuce ???

    @+FikoU

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Re,
    J'ai réussi à afficher la console mais la fenêtre se ferme immédiatement, je ne peut rien lire.

    @+FikoU

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    La console ne s'affiche que si c'est une application console
    Elle se ferme quand le programme se termine, donc pour avoir le temps de la voir il faut par exemple mettre un Console.ReadLine avant la fin du programme (ça attend que l'utilisateur appuie sur Entrée après avoir éventuellement tapé une ligne de texte)

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Re,
    OK ca marche

    Merci
    FikoU

Discussions similaires

  1. [Débutant] ScrollEvent pour recharger une DataTable liee a ma DataGridView
    Par gorgonzovale dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/02/2014, 23h10
  2. [a4j] Support ne recharge pas ma datatable.
    Par mcfly37 dans le forum JSF
    Réponses: 8
    Dernier message: 18/05/2011, 18h25
  3. rechargement d'une ice:dataTable
    Par DamienF dans le forum JSF
    Réponses: 19
    Dernier message: 23/10/2008, 18h35
  4. DataTable et multi rechargement
    Par threshold dans le forum JSF
    Réponses: 5
    Dernier message: 12/04/2008, 16h10
  5. Réponses: 1
    Dernier message: 27/03/2007, 10h59

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