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 :

Problème de DataTable, insertion d'une ligne entre deux autres lignes


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 56
    Points
    56
    Par défaut Problème de DataTable, insertion d'une ligne entre deux autres lignes
    Bonjour, Bonsoir tout le monde,

    Voici mon soucis si quelqu'un peut m'aider.

    En faite j'essaye de créer une hiérarchie dans une DataTable car en SQL j'ai pas réussi.

    Voici un exemple de ma vision avant tout

    Par exemple j'ai maison, avec la face avant, face arrière etc....

    après donc si j'ai une fenêtre par exemple je dois donner le type de fenêtre.

    Donc en gros voilà se que cela devrais donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Maison
        => Face Avant
             => 1ère Fenêtre
                  => Aluminium
             => 2ème Fenêtre
                  => Aluminium
             => Porte Simple demi vitré
                  => Bois
        => Face Arrière
             => 1ère Fenêtre
                  => Aluminium
             => Porte Double Vitré
                  => PVC
    Se que je voudrais donc faire.

    C'est j'ai une table par exemple nommé DataTableFaceAvant
    Après l'avoir chargé avec une requête SQL.

    Je fais une boucle pour récupérer le code de chaque composant et dans une autre table (MyDataTable) je récupère les composants liés.

    Donc en gros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataTableFaceAvant= MySQL_DataTable("Select * " & _
    "From _composants " & _
    "Where caNiveau = '1' And caCodeRubrique = 'FaceAvant' And caCodeArticle = '" & CodeArticle & "' ")
    Exemple elle comporte 3 Lignes

    Je vais donc aller chercher le code des composants lié du niveau 1 qui me permettra ensuite de faire une recherche des composants lié du niveau 2 avec la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MyDataTable = MySQL_DataTable("Select * From composants  " & _
    "Where caNiveau = '2' And caCodeComposantParent = '" & DataTableFaceAvant.Rows(n)("caCodeComposant").ToString & "' And caCodeArticle = '" & CodeArticle & "' " )
    Ensuite je voudrais inserer les lignes récupérer de ma MyDataTable dans DataTableFaceAvant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For n As Integer = 0 To DataTableFaceAvant.Rows.Count - 1
     
    MyDataTable = MySQL_DataTable("Select * From composants  " & _
    "Where caNiveau = '2' And caCodeComposantParent = '" & DataTableFaceAvant.Rows(n)("caCodeComposant").ToString & "' And caCodeArticle = '" & CodeArticle & "' " )
     
    For A As Integer = 0 To MyDataTable .Rows.Count - 1
    MyDataTable .Rows.InsertAt(DataTableFaceAvant.Rows(n), a)
    Next
     
    Next
    Mais la ligne InsertAt ne fonctionne pas :-(

    j'ai le message
    Cette ligne appartient déjà à une autre table.
    Si quelqu'un aurait une idée ?

    C'est seulement la parti pour incrémenter la famille Niveau 1

    J'espère que j'ai été assé explicite :$

    Cordialement

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Cette erreur arrive quand vont insérer une ligne d'une datatable A dans une Datatable B.

    La solution, Faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim MaLigne as Datarow = DatatableB.NewRow
    MaLigne = DatatableA.Rows(1).copy
    DatatableB.insert(MaLigne)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 56
    Points
    56
    Par défaut
    Merci

    Mais malheureusement ne fonctionne pas.

    Copy n'existe pas

    Il faut surtout que je puisse insérer une ligne de la DataTableA entre deux ligne de la DataTableB

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Je t'ai ecris du code "En gros"

    Alors pour répondre:

    j'ai le message "Cette ligne appartient déjà à une autre table."
    -> Ce problème se règle avec le code que je t'ai mis. Il faut que tu prennes ta datatable de destination et faire Newrow, pour pouvoir a l'avenir l'insérer.

    DatatableA.rows.copy n'existe pas
    ->bien sur... tu ne souhaites pas copié toutes les lignes. C'est pourquoi dans mon exemple j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DatatableA.Rows(1).copy
    Ou 1 est une valeur par defaut, mais tu devrai remplasser ça par le numéro de la ligne qui te conviens, surement stocker dans un Integer

    Il faut surtout que je puisse insérer une ligne de la DataTableA entre deux ligne de la DataTableB
    -> Pour ça pas de problème, ta solution initiale du InsertAt est bien la bonne solution.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup

    Je vais travailler cela en détail

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

Discussions similaires

  1. Insérer une ligne entre deux autres dans un fichier
    Par c1malabar dans le forum Langage
    Réponses: 8
    Dernier message: 25/05/2011, 19h44
  2. Réponses: 3
    Dernier message: 23/05/2008, 14h52
  3. Problème avec Insert dans une table contenant deux clés
    Par pure_blue dans le forum Accès aux données
    Réponses: 5
    Dernier message: 23/10/2006, 19h32
  4. REGEXP : recupérer une chaine entre deux autres chaines
    Par dude666 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/08/2006, 09h23
  5. Problème avec l'insertion d'une image dans JPanel
    Par anutka dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 16/03/2006, 10h02

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