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

Windows Forms Discussion :

Ajout d'un record dans un DataTable


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 58
    Par défaut Ajout d'un record dans un DataTable
    Salut à tous.

    Voila j'ai un DataTable que j'arrive déjà à remplir avec un DataAdapter depuis une base de données. J'arrive également à ajouter un record (DataRow) dans le DataTable mais lorsque j'essaie de mettre à jour la base de données, le record ne passe pas...
    J'ai vérifié que les champs n'acceptant pas de valeur nulle sont remplis avec une valeur par défaut du bon type.
    Auriez-vous une idée? Pour info, je procède comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    :
    //déclaration de la nouvelle ligne
    DataRow rowAjout = tabItem.NewRow();
    :
    rowAjout[1] = 45489;
    rowAjout[56] = 1;
    :
    //MAJ de la DB (DaItem est le DataAdapter; tabItem est le DataTable)
    DaItem.Update(tabItem);
    Merci beaucoup

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    //déclaration de la nouvelle ligne
    DataRow rowAjout = tabItem.NewRow();
     
    rowAjout[1] = 45489;
    rowAjout[56] = 1;
     
    DaItem.tabItem.Rows.Add(rowAjout);
     
    //MAJ de la DB (DaItem est le DataAdapter; tabItem est le DataTable)
    DaItem.Update(tabItem);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 58
    Par défaut
    Hello. Merci pour ta réponse.

    EN ayant ajouté la ligne d'ajout dans le DataTable, j'ai maintenant une erreur générée lors du Update sur la DB
    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll
    Bizarre...Des pistes?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 58
    Par défaut
    Je resort mon topic du fond des âges car après l'avoir laissé de coté, je reprends mon projet et je n'ai toujours pas trouvé de solution...

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par belzeluc
    EN ayant ajouté la ligne d'ajout dans le DataTable, j'ai maintenant une erreur générée lors du Update sur la DB
    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll
    ça ressemble à une exception lors de l'insertion dans la base de données
    Quelle est la commande d'insertion du DataAdapter ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 58
    Par défaut
    Oui pour moi aussi c'est une erreur d'insertion

    INSERT INTO item(item_number, description, default_location_id, cost, avgcost, manufacturer_id, category_id, unit_of_measure, reorder_qty, alt_item_number, linked_file, list_price, sale_price, supplier_id, min_stock_level, max_stock_level, qty_available, qty_checked_out, qty_in_house, track_serial_numbers, track_lots, track_date_codes, track_pallets, track_pos, track_suppliers, track_customers, allow_fraction_qty, manager, checkout_duration, width, height, length, dimension_unit, weight, weight_unit, usrdefdate1, usrdefdate2, usrdefdate3, usrdefdate4, usrdefdate5, usrdefnumber1, usrdefnumber2, usrdefnumber3, usrdefnumber4, usrdefnumber5, usrdeftext1, usrdeftext2, usrdeftext3, usrdeftext4, usrdeftext5, usrdeftext6, usrdeftext7, usrdeftext8, usrdeftext9, usrdeftext10, record_status, company_id, list_id, date_updated, auto_sn, auto_sn_value) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); SELECT item_id, item_number, description, default_location_id, cost, avgcost, manufacturer_id, category_id, unit_of_measure, reorder_qty, alt_item_number, linked_file, list_price, sale_price, supplier_id, min_stock_level, max_stock_level, qty_available, qty_checked_out, qty_in_house, track_serial_numbers, track_lots, track_date_codes, track_pallets, track_pos, track_suppliers, track_customers, allow_fraction_qty, manager, checkout_duration, width, height, length, dimension_unit, weight, weight_unit, usrdefdate1, usrdefdate2, usrdefdate3, usrdefdate4, usrdefdate5, usrdefnumber1, usrdefnumber2, usrdefnumber3, usrdefnumber4, usrdefnumber5, usrdeftext1, usrdeftext2, usrdeftext3, usrdeftext4, usrdeftext5, usrdeftext6, usrdeftext7, usrdeftext8, usrdeftext9, usrdeftext10, record_status, company_id, list_id, date_updated, auto_sn, auto_sn_value FROM item WHERE (item_id = @@IDENTITY)
    Ce qui me parait bizarre, c'est la deuxième partie de la commande, après le "SELECT"...

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Ce qui me parait bizarre, c'est la deuxième partie de la commande, après le "SELECT"...
    et pourtant c'est ton code... il a donc été récupéré quelque part ? ^^


    La deuxième partie de la requête sert à récupérer le dernier enregistrement créé dans la base, par exemple pour vérifier que c'est bien le bon, ou pour récupérer les valeurs produites automatiquement (compteurs...) par la base et les réinsérer dans ta DataTable.

    Problèmes que je peux envisager :
    - ta base accepte-t-elle les requêtes multiples ? par exemple, Access ne les accepte pas => erreur
    - en supposant que les requêtes multiples sont acceptées, le fait d'en utiliser dans l'InsertCommand du DataAdapter pose peut-être problème ; *j'imagine* qu'à l'intérieur du DataAdapter la requête d'insertion est envoyée en ExecuteNonQuery puisqu'on n'attend pas de résultat...

    Dans tous les cas, cette deuxième partie dans la requête est inutile, puisque le résultat retourné ne sera jamais traité !
    C'est une solution à utiliser quand tu fais tes insertions "à la main", sans passer par un DataAdapter.

Discussions similaires

  1. Ajout de cle primaire dans une DataTable
    Par Marc_27 dans le forum C#
    Réponses: 2
    Dernier message: 30/03/2011, 14h08
  2. Réponses: 10
    Dernier message: 10/08/2010, 14h29
  3. Réponses: 5
    Dernier message: 07/08/2007, 10h10
  4. [C#] Problème d'ajout d'une ligne dans une DataTable
    Par therock dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/11/2006, 08h27
  5. [MySQL] Ajout d'un record dans une base de donnees
    Par barthelv dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/03/2006, 16h03

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