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 :

Numéroter les lignes d'un datagrilview


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Numéroter les lignes d'un datagrilview
    Bonjour, depuis un certain temps j’essai de numéroter les ligne d'un DataGridView1 et tout ce passe bien.
    Quand je supprime une ligne dans la base de données (exemple ligne 3), le DataGridView1 s'actualise et ma bien supprimer la ligne 3.
    Ensuite je veux numéroter mes lignes et il ne m'affiche pas la ligne 3, il la saute.
    Quand le bout de code remplie la colonne, il numérote :
    1
    2
    4
    5
    ...
    Le 3 n'y s'affiche pas
    Comment y remédié.
    Voici le bout de code que je met pour numéroter après actualisation de la base
    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
     Dim conn As OleDbConnection
            Dim conZ As OleDbCommand
            Dim dr As OleDbDataReader
     
            conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & My.Application.Info.DirectoryPath & "\Ma_base_de_données.accdb")
            conn.Open()
            conZ = New OleDbCommand("SELECT * FROM Ma_base_de_données", conn)
            dr = conZ.ExecuteReader
            Try
                Dim i As Integer = 0
                    While dr.Read
                        With DataGridView1
                        .Rows(i).Cells(8).Value = dr(0)
                        i = i +1
                      End With
                End While
     
     
            Catch ex As Exception
     
            End Try
     
            dr.Close()
            conn.Close()
        End Sub
    Merci de votre aide

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    conZ = New OleDbCommand("SELECT * FROM Ma_base_de_données", conn)
    dr = conZ.ExecuteReader
    Try
    Dim i As Integer = 0
    While dr.Read
    With DataGridView1
    .Rows(i).Cells(8).Value = dr(0)
    i = i +1
    End With
    End While
    Si je lis bien ton code ci-dessus, tu ne numérotes pas les lignes du DGV mais tu accèdes à chaque ligne sur base de l'indice i, qui évolue de 0 à ..., selon le nombre d'enregistrements livrés par ton SELECT.
    A chaque ligne accédée, tu écris en colonne 8, la valeur du premier champ de l'enregistrement que tu réserves à cette ligne-là.
    Si l'exemple que tu nous donnes (1, 2, 4, 5, ...) représente ces valeurs de la colonne 8, alors l'absence de 3 signifie qu'il n'y a pas d'enregistrement portant cette valeur dans son premier champ. S'agirait-il de l'ID d'un enregistrement qui a été supprimé ?

    J'espère que cette réflexion t'aidera ...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Re-bonjour,

    Le code me numérote bien la colonne 8 du DataGridView1 comme je le souhaite. Le code accède à la base de données juste pour arrête de numéroter à la dernière ligne du datagridview1 du moins je pense.
    Voici le DataGridView1 simplifié AVANT suppression du ID 3:
    Nom : Tout enregistrement 1.PNG
Affichages : 134
Taille : 8,9 Ko

    L'absence de la ligne 3 représente bien un ID supprimer.

    Voici le DataGridView1 simplifié APRÈS suppression du ID 3:
    Nom : après_suppression.PNG
Affichages : 108
Taille : 8,8 Ko

    La colonne 0 ID avec clé primaire auto_increment pas y toucher car les ID représente des identifiant.
    Par-contre :
    La colonne 8 en en NUMERIC, on peux en faire e que l'on veux tant que ça me numérote bien de +1 chaque ligne.
    Sachant que quand je supprime un ID je remet en fonction le code pour remettre la numérotation correctement 1 2 3 4 ... .

    Es ce que je peux faire cela en modifiant ce code car apparemment le code fournit n'est pas bon.
    Ou avec un nouveau code tant que cela fonctionne.

    Merci

  4. #4
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    OK, j'ai donc bien compris ton code et là, je peux t'affirmer que tu ne numérotes pas les lignes.
    Tu incrémentes un indice i, mais il te sert à passer d'une ligne à l'autre.
    Le code suivant écrirait la valeur de i dans la colonne COL (et ça, ce serait numéroter tes lignes, en colonne 0 si COL = 0 ou en en colonne 8 si COL = 8) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    conZ = New OleDbCommand("SELECT * FROM Ma_base_de_données", conn)
    dr = conZ.ExecuteReader
    Try
    Dim i As Integer = 0
    While dr.Read
    With DataGridView1
    .Rows(i).Cells(COL).Value = i   ' ou bien ... .Value = i+1 si tu veux commencer la numérotation à 1 plutôt qu'à 0
    i = i +1
    End With
    End While

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour, merci de votre aide si précieuse.
    ça fonctionne impeccable
    Bonne continuation

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

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