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 :

Fonction select LINQ sur un dataset pour affecter dans un autre dataset


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut Fonction select LINQ sur un dataset pour affecter dans un autre dataset
    Bonjour,

    j'ai besoin d'affecter 1 ou plusieurs ligne d'un dataset dans un auter, pour se faire j'utilise la fonction select. Mais j'ai une erreur avant la compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Dim dsMetalByOderID As DataSet = dsMetal.Clone()
     dsMetalByOderID.Tables(0).ImportRow(dsMetal.Tables(0).Select("s_CoilID = " + Me.DataGridViewCouvertureMetal.CurrentRow.Cells(8).Value.ToString()))
    Y'a t'il moyen de faire ceci ? Ai-je oublier quelque chose ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par gueulederack Voir le message
    Mais j'ai une erreur avant la compilation
    Et tu crois pas que tu aurais oublié d'indiquer un truc dans ta question ?

    Soit dit en passant, la méthode Select que tu utilises n'a rien à voir avec Linq, c'est seulement la méthode DataTable.Select

  3. #3
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir à vous,

    Tout d'abord une petite correction, ceci n'est pas du Linq.

    Ensuite il suffit de regarder la définition des méthodes pour trouver l'erreur :
    DataTable.ImportRow : Prend une row en entrée
    DataTable.Select : sort un tableau de row

    Donc avec cette manière il faudrait bouclé sur le résultat pour importer ligne par ligne.


    Une autre voie de solution est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim view As New DataView(table,"s_CoilID = " + Me.DataGridViewCouvertureMetal.CurrentRow.Cells(8).Value.ToString()), "s_CoilID", DataViewRowState.CurrentRows)
            Dim dsMetalByOderID As New DataSet
            dsMetalByOderID.Tables.Add(view.ToTable())
    EDIT : tomlev plus rapide que moi

  4. #4
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    Merci pour votre aide. Avec la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Dim view As New DataView(table,"s_CoilID = " + Me.DataGridViewCouvertureMetal.CurrentRow.Cells(8).Value.ToString()), "s_CoilID", DataViewRowState.CurrentRows)
            Dim dsMetalByOderID As New DataSet
            dsMetalByOderID.Tables.Add(View.ToTable())
    j'ai 2 erreurs:

    l'une sur le 2ème "s_CoilID",
    Error 44 Identifier expected. C:\MES Project Collection\Reports FR Studio\Version 0.01\ReportsFR.UI\FormCouvertureMetal.vb 328 133 Stainless.ReportsFR.UI
    l'autre sur le View.ToTable(),
    Error 45 'ToTable' is not a member of 'System.Windows.Forms.View'. C:\MES Project Collection\Reports FR Studio\Version 0.01\ReportsFR.UI\FormCouvertureMetal.vb 330 36 Stainless.ReportsFR.UI

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par gueulederack Voir le message
    l'autre sur le View.ToTable(), Error 45 'ToTable' is not a member of 'System.Windows.Forms.View'. C:\MES Project Collection\Reports FR Studio\Version 0.01\ReportsFR.UI\FormCouvertureMetal.vb 330 36 Stainless.ReportsFR.UI

    DataView ne vient pas de 'System.Windows.Forms.View' mais de ' System.Data.DataView'

    donc essayez avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim view As New System.Data.DataView(table,"s_CoilID = " + Me.DataGridViewCouvertureMetal.CurrentRow.Cells(8).Value.ToString()), "s_CoilID", DataViewRowState.CurrentRows)
            Dim dsMetalByOderID As New DataSet
            dsMetalByOderID.Tables.Add(View.ToTable())
    Pour trouver cela, aller sur MSDN : http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx
    Et regarder au niveau "Hiérarchie d'héritage"

  6. #6
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    ça ne marcait pas, mais j'ai fait ceci pour le bon fonctionnement:

    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
     
      Dim dsMetalByOderID As DataSet = dsMetal.Clone
            dsMetalByOderID.Tables(0).Columns.Add("s_orderId", GetType(String))
            Dim drMetal As DataRow
            For Each ligneMToC As sBL.MetalToCommande In listMetalToCommande
                For Each ligneMetalSelect In ligneMToC.dm_Metal
                    If ligneMetalSelect.s_CoilID = Me.DataGridViewCouvertureMetal.CurrentRow.Cells(8).Value.ToString() Then
                        drMetal = dsMetalByOderID.Tables(0).NewRow()
                        drMetal("d_Vx_Retard") = ligneMetalSelect.d_pds_cm_Vx_retard
                        drMetal("d_Retard") = ligneMetalSelect.d_pds_cm_Retard
                        drMetal("d_Heure") = ligneMetalSelect.d_pds_cm_Heure
                        drMetal("d_Avance_inf4s") = ligneMetalSelect.d_pds_cm_Avance4s
                        drMetal("d_Avance_inf8s") = ligneMetalSelect.d_pds_cm_Avance8s
                        drMetal("d_Avance_sup8s") = ligneMetalSelect.b_cm_AvSup8s
                        drMetal("d_pds_SsDelaiMetal") = ligneMetalSelect.d_pds_SsDelaiMetal
                        drMetal("s_CoilID") = ligneMetalSelect.s_CoilID
                        drMetal("s_orderId") = ligneMetalSelect.s_Orderid
                        dsMetalByOderID.Tables(0).Rows.Add(drMetal)
                    End If
                Next
            Next
    listMetalToCommande est un ObservableCollection

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Je trouve ça terrible pour un Ingénieur ?!?! de ne pas essayer de chercher l'erreur qui était bêtement une parenthèse de trop...
    Voici le code fonctionnel sans la parenthèse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim view As New System.Data.DataView(table, "s_CoilID = " & Me.DataGridViewCouvertureMetal.CurrentRow.Cells(8).Value.ToString(), "s_CoilID", DataViewRowState.CurrentRows)
            Dim dsMetalByOderID As New DataSet
            dsMetalByOderID.Tables.Add(View.ToTable())
    et puis de venir avec un listMetalToCommande qu'on ne sais même pas d'où il sort (Pas dans les codes précité)

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2014, 22h37
  2. Réponses: 13
    Dernier message: 31/10/2008, 13h32
  3. Réponses: 2
    Dernier message: 30/10/2008, 18h37
  4. Réponses: 2
    Dernier message: 29/08/2007, 19h43
  5. Select sur une BD et Insert dans une autre
    Par arnolem dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/07/2006, 14h14

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