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 :

Impossible d'ajouter une ligne à une table [Débutant]


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 Impossible d'ajouter une ligne à une table
    bonjour,

    Je me heurte depuis hier à un pb

    Pour ajouter une ligne à une table j'utilise le code-type suivant :
    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")=valeur1
    dr("champ2")=valeur2
    ...
    dr("champN")=valeurN
     
    dt.Rows.Add(dr)
    MonTableAdapter.Update(dt)
    Dans cette table, champ0 est le compteur qui sert de clé primaire. Normalement, les instructions NeweRow suivie de Add doivent générer une valeur incrémentée stockée dans champ0.
    J'utilise déjà ce type de code pour ajouter des lignes à d'autres tables mais là, ça ne marche pas ; voici ce qui se passe à la place.

    Dabord, une ligne est bien ajoutée dans la table et est conforme.

    Mais, si plusieurs ligne de ma table contiennent la même valeur pour champ1, la première de ces lignes est modifiée avec les valeurs suivantes :
    champ1 = valeur1
    champ2=0
    champ 3 à N = <rien>

    Aucun message d'erreur.

    Je ne vois pas d'où ça peut provenir. Quelqu'un peut-il m'aiguiller ?

  2. #2
    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

    Quelle requete as tu écris pour remplir monDataTable ?

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Quelques chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT champ0, champ1, ... , champ N FROM table

  4. #4
    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
    justement après avoir testé
    essaie plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  champ1, ... , champ N FROM table
    tu n'as pas besoin de champ0 il est inseré automatiquement

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Pourtant quand je dis que ça marche avec d'autres tables, j'ai procédé de la même manière.
    D'ailleurs, si je tente de supprimer le champ0, j'ai le message d'erreur ci-joint qui montre que la méthode update et delete ne fonctionnera pas.
    Images attachées Images attachées  

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Petit complément : en fait j'avais un code qui fonctionnait bien, à base de SQL.
    Mon objectif est de simplifier mon code en utilisant les méthodes proposées par VB.NET à base de datatable.

    Voici mon code qui marchait :

    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
     
    Dim Connexion As New SQLiteConnection(My.Settings.ConnectionString)
    Dim SQL As String
    SQL = "INSERT INTO table (champ1, champ2, champ3, champ4, champ5, champ6) " & _
                         "VALUES (@champ1, @champ2, @champ3, @champ4, @champ5, @champ6)"
     
     Connexion.Open()
     Dim commande As New SQLiteCommand(SQL, Connexion)
                With commande.Parameters
                    .AddWithValue("@champ1", valeur1)
                    .AddWithValue("@champ2", valeur2)
                    .AddWithValue("@champ3", valeur3)
                    .AddWithValue("@champ4", valeur4)
                    .AddWithValue("@champ5", valeur5)
                    .AddWithValue("@champ6", valeur6)
                End With
                commande.ExecuteNonQuery()
                commande.Dispose()
    Ceci m'a fait penser que shayw avait peut-être raison, mais comme je l'ai indiqué, j'utilise déjà la méthode datarow.update pour d'autres tables structurées exactement de la même manière.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. [WD14] Thread qui ajoute des lignes à une table
    Par rndhnqz dans le forum WinDev
    Réponses: 11
    Dernier message: 09/02/2010, 12h48
  3. Ajouter dynamiquement une ligne à une table ET form
    Par etathome dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/09/2008, 16h33
  4. ajouter supprimer une ligne dans table
    Par mans27 dans le forum JSF
    Réponses: 1
    Dernier message: 28/05/2007, 13h56
  5. [DOM] Ajout dynamique d'une ligne dans un <table>
    Par Alzelus dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2007, 17h05

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