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

C# Discussion :

ImportRow dans une DataTable [Débutant]


Sujet :

C#

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut ImportRow dans une DataTable
    Bonjour,

    Désolé si je ne suis pas dans le bon forum mais je ne savais pas trop où aller.

    J'aimerai importer un DataRow dans une DataTable de la manière suivante :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    DataTable cars = new DataTable("Cars");
     
    DataColumn vin = new DataColumn("Vin");
    vin.DataType = typeof(string);
    vin.MaxLength = 23;
    vin.Unique = true;
    vin.AllowDBNull = false;
    vin.Caption = "VIN";
    cars.Columns.Add(vin);
     
    //Add the DataColums using defaults
    DataColumn make = new DataColumn("Make");
    make.MaxLength = 35;
    make.AllowDBNull = false;
    cars.Columns.Add(make);
    DataColumn year = new DataColumn("Year", typeof(int));
    year.AllowDBNull = false;
    cars.Columns.Add(year);
     
    //Derived column using expression
    DataColumn yearMake = new DataColumn("Year and Make");
    yearMake.DataType = typeof(string);
    yearMake.MaxLength = 70;
    yearMake.Expression = "Year + ' ' + Make";
    cars.Columns.Add(yearMake);
     
    //Set the Primary Key
    cars.PrimaryKey = new DataColumn[] { vin };
     
    DataRow test = cars.NewRow();
    test["Vin"] = "132649587ABCD";
    test["Make"] = "Opel";
    test["Year"] = 2012;
    cars.ImportRow(test);
    Le souci est que le status du DataRow test est toujours à 'Detached' donc jamais ajouter dans ma DataTable, et j'aiemrai savoir pourquoi il n'est pas ajouter. Je sais qu'avec un NewRow cela fonctionne.

    D'avance merci pour votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Pour ce que tu veux faire, j'auras plutot fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DataRow test = cars.Rows.Add();
    test["Vin"] = "132649587ABCD";
    test["Make"] = "Opel";
    test["Year"] = 2012;

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut
    J'ai testé la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DataRow test = cars.Rows.Add();
    test["Vin"] = "132649587ABCD";
    test["Make"] = "Opel";
    test["Year"] = 2012;
    Le souci est que les champs sont déclaré comme NotNull et de ce fait il ne peux y avoir un ajout sans les valeurs, comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cars.Rows.Add("987654321XYZ", "Buick", 2001);
    Mon souhait est d'initialiser un nouveau record (row) et d'ensuite l'importer dans la DataTable, mais est-ce possible ?

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    et de ce fait il ne peux y avoir un ajout sans les valeurs
    Mais si !
    Tu mets pour celles la DBNull.Value

    Et d'autre part je t'ai montré comment tu pouvais AUSSI creer le row et assigner les valeurs APRES la création

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut
    Merci pour l'infos, mais je ne souhaite pas changer la propriété AllowDBNull à True car je pense qu'il est malgré tout possible d'importer un DataRow avec les valeurs null interdites dans la db.

    Je comprends ton test mais dans mon cas il soulève une System.Data.NotNullException ce qui ne résout pas le problème, j'en convient.

    Je suis un peu perdu mais je vais investiguer.

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut
    Il semblerait que la méthode ImportRow sur une DataTable ne soit valable qu'après avoir cloner la table.
    Je m'explique, on a un table A et une table B qui est le clone de A (donc même structure mais sans les données).

    Ensuite on récupère tout ou partie des données de la table A pour copier cela dans la table B.

    Voilà ce que j'en ai compris, si toutefois c'étais incorrect ou incomplet, n'hésitez pas à le faire remarqué.

    A+ et merci.

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

Discussions similaires

  1. [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
  2. [c#][1.1][VS 2003] Faire un group By dans une datatable
    Par notalp dans le forum Accès aux données
    Réponses: 2
    Dernier message: 03/11/2006, 21h18
  3. Réponses: 6
    Dernier message: 18/10/2006, 16h34
  4. Réponses: 3
    Dernier message: 19/07/2006, 14h28
  5. [C#] Modifier une valeur dans une DataTable
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/05/2005, 10h45

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