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 :

Récupérer le compteur d'une nouvelle ligne de DataTable


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut Récupérer le compteur d'une nouvelle ligne de DataTable
    Bonjour,

    En manipulant une DataTable, je crée une nouvelle ligne dans celle-ci.
    Il se trouve que la clé primaire est un compteur (champ0)

    Donc je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim dr As DataRow = Nothing
    Dim dt As DataTable = MonDataSettypé.monDataTable
     
    dr=dt.NewRow
    dr("champ1")=...
    dr("champ2")=...
    ...
    dr("champN")=...
     
    dt.Rows.Add(dr)
    MonTableAdapter.Update(dt)
    A ce stade, j'ai besoin de récupérer le champ0 sur la ligne de dr qui a été généré.
    Mais l'instruction dr("champ0") me renvoie -1 même si je l'intercale avant la méthode Add, juste après, ou juste après la méthode Update.

    Comment faire ?

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je pense que cette ligne devrait faire suffire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteur = dr.items("champ0").value
    ou si tu est sur que ton champ0 est bien en colonne 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteur = dr.items(0).value
    P.S. Je n'ai pas accès à mes programmes, ni à mon aide, VB pour l'instant, mais je pense que tu peux te passer de cette ligne :

    Il me semble qu'en ajoutant une ligne à la table, la collection Rows se met ;a jour automatiquement.

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    Je pense que cette ligne devrait faire suffire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteur = dr.items("champ0").value
    Ben c'est ce que j'ai fait avant de poster ma question (cf mon premier message) mais ça me renvoie -1

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Avec une instruction Linq,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (From element In MonDataSettypé.monDataTable Select element.Champ0)(MonDataSettypé.monDataTable.Rows.Count - 1)
    j'ai pu identifier que si mon compteur est à la valeur 180 (par exemple) avant ajout d'un enregistrement, la valeur suivante est -1 alors que, dans le même temps, la visualisation de ma table dans SQLExpert montre bien que le Nème enregistrement porte bien le n°181

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    P.S. Je n'ai pas accès à mes programmes, ni à mon aide, VB pour l'instant, mais je pense que tu peux te passer de cette ligne :


    Il me semble qu'en ajoutant une ligne à la table, la collection Rows se met ;a jour automatiquement.
    J'ai fait un test et il n'est pas concluant. Si je ne mets pas l'instruction dt.Rows.Add(dr), le compteur le nouvel enregistrement n'est pas ajouté à la table.

  6. #6
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut
    essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim c As Object
            c = dt.Rows(dt.Rows.Count - 1).Item("champs0")

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/06/2007, 20h39
  2. [C# .NET2.0][MySQL] Insertion d'une nouvelle ligne via un dataset
    Par bodygard dans le forum Accès aux données
    Réponses: 1
    Dernier message: 16/05/2007, 12h22
  3. Réponses: 2
    Dernier message: 06/02/2007, 09h17
  4. Réponses: 18
    Dernier message: 26/07/2006, 14h51
  5. Réponses: 2
    Dernier message: 07/12/2005, 16h26

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