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

ASP.NET Discussion :

Merge DataTable SQL


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut Merge DataTable SQL
    Bonsoir,

    voici un nouveau probleme dans mon appli.

    Je stocke en XML une liste de requetes qui me retournent un résultat unique, dans ce xml les données sont stockées sous la forme

    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
     <tableau>
          <titre>Informations machine</titre>
          <colonnes>
            <colonne>
              SELECT dev.ad_dns_host_name as 'Machine'
              FROM dbo.devices dev
              WHERE dev.device_number=@device
            </colonne>
            <colonne>
              SELECT ROUND(SUM(cpu.max_clock_speed),0) as 'Processeur (Mhz)'
              FROM dbo.processors cpu, dbo.devices dev
              WHERE dev.device_number=cpu.device_number
              AND dev.device_number=@device
            </colonne>
    </tableau>
    j'aimerais creer mes gridviews dynamiquement selon le modele et les requetes du XML. pour l'instant j'arrive à stocker mes requetes et les éxécuter. le code est le suivant
    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
     
    private void executeQueries()
            {
                foreach (SqlTable tableau in listTableaux)
                {
                    System.Web.UI.WebControls.Label lblTitle = new System.Web.UI.WebControls.Label();
                    lblTitle.Text = tableau.title;
                    lblTitle.CssClass = "Title";
                    pnlGridViews.Controls.Add(lblTitle);
                    GridView gvTableau = new GridView();
                    System.Data.DataTable dtTab = new System.Data.DataTable();
                    foreach (String strQuery in tableau.columns)
                    {
     
                        SqlCommand SqlCmd = new SqlCommand(strQuery,SqlCnx);
                        SqlCmd.Parameters.Add(new SqlParameter("@device",DevNumber));
                        SqlDataReader dtReader = SqlCmd.ExecuteReader();
                        System.Data.DataTable dtTable = new System.Data.DataTable();
                        dtTable.Load(dtReader);
                        dtTab.Merge(dtTable,false);
                        dtReader.Close();
                    }
                    gvTableau.DataSource = dtTab;
                    gvTableau.DataBind();
                    pnlGridViews.Controls.Add(gvTableau);
                }
            }
    seulement à l'affichage celà me donne un tableau tout décallé, au lieu de n'avoir qu'une ligne, j'ai autant de lignes que de requetes et le tableau est rempli en diagonale avec plein de cases vides.

    sauriez vous me dire pourquoi ?

    en vous remerciant !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Par défaut
    Je pense que ce que tu n'as pas compris c'est le fonctionnement du merge.

    Quand tu fait le merge sur des datatables qui n'ont aucune colonne en commun, cela va créer une nouvelle ligne pour chaque nouvel enregistrement, car le merge n'a aucune idée de comment il faudrait regrouper les lignes.

    exemple

    dtb1 :

    dtb2

    alors le merge des 2 datatable donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Colonne0    Colonne1
    a               null
    b               null
    null            c
    null            d
    En revanche si tu as une colonne de référence dans chaque datatable qui t'indique le numéro de ligne, le merge va le prendre en compte :

    dtb1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cle_primaire  Colonne0
    0                 a
    1                 b
    dtb2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cle_primaire  Colonne1
    0                 c
    1                 d

    alors le merge te donnera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cle_primaire Colonne0 Colonne1
    0                a           c
    1                b           d
    Dans ton cas il faudrait donc que tu rajoutes une colonne dans chaque datatable qui fasse office de cle primaire.

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

Discussions similaires

  1. MERGE VS SQL(JOIN)
    Par tiyolx dans le forum SAS Base
    Réponses: 1
    Dernier message: 15/09/2014, 10h40
  2. différence entre data merge et sql where
    Par L0007 dans le forum SAS Base
    Réponses: 6
    Dernier message: 14/10/2010, 15h58
  3. [PL/SQL] Requête Merge
    Par claralavraie dans le forum Oracle
    Réponses: 9
    Dernier message: 22/01/2008, 15h34
  4. Comment faire une requête SQL dans un datatable
    Par Passepoil dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/02/2007, 20h24
  5. utilisation de la fonction Merge de sql
    Par freestyler dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/10/2006, 14h16

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