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 :

Datatable.Add(Datarow) : pb avec le compteur autoincrémenté.


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 Datatable.Add(Datarow) : pb avec le compteur autoincrémenté.
    Bonjour,
    Je suis en train de regarder comment recoder mes connexions à la base de données sans passer par le dataset typé.
    J'ai un pb pour ajouter de nouveaux enregistrements à une table.

    Avant j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                    Dim dr As DataRow = Nothing
                    Dim dt As DataTable = MyDataSetTypé.dt2_References 'où dt2 est la datatable associée à ma table Références
                    dr = dt.NewRow
                    'ici le code pour remplir dr
                    'ci-dessous le code pour mettre à jour ma bdd
                    dt.Rows.Add(dr)
                    Me.ta_References.Update(dt)
    Voici ma traduction sans le datasettypé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                    Dim dr As DataRow = Nothing
                    Dim dt As DataTable = MyDataSet.Tables("dt2_References")
                    dr = dt.NewRow
                    'ici le code pour remplir dr
                    'ci-dessous le code pour mettre à jour ma bdd
                    dt.Rows.Add(dr)
                    cmd = New SQLiteCommand(sql_References, con)
                    ad = New SQLiteDataAdapter(cmd)
                    Dim oCommandBuilder As New SQLiteCommandBuilder(ad)
                    ad.Update(MyDataSet, "dt2_References")
    En fait, je coince sur le dt.Rows.Add(dr)
    L'erreur est que le champ N_ref qui est la clé primaire dans la table Références dans la BdD est qui est un compteur auto-incrémenté n'accepte pas de valeur nulle. Ce qui est logique.
    Mais dans le premier code, l'instruction dt.Rows.Add(dr) générait automatiquement l'incrémentation de ce compteur.
    Visiblement ce n'est pas le cas dans le second code.
    Comment faut-il faire ?

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Qu'y a-t'il dans ad.InsertCommand.Text ?

    On devrait y trouver quequechose comme :
    "; SELECT @p1 = last_insert_rowid();"

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Je n'ai pas de telle commande dans aucun des 2 codes que j'ai présentés.

Discussions similaires

  1. [JPOX]Problèmes avec un identifiant autoincrement
    Par Vikisme dans le forum Persistance des données
    Réponses: 1
    Dernier message: 29/05/2007, 15h44
  2. Problème avec datatable et datarow
    Par Pierre Fauconnier dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/05/2007, 08h36
  3. Réponses: 1
    Dernier message: 02/03/2007, 17h03
  4. Réponses: 5
    Dernier message: 06/10/2006, 12h19
  5. [XPath](Java) parcours de résultat avec un "compteur"
    Par denebj dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 16/06/2006, 10h01

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