Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1651 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] (RESOLU) GetSchemaTable trop de champs !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] (RESOLU) GetSchemaTable trop de champs !

n°1951195
SplitForm
Moomnia !!!
Posté le 17-12-2009 à 14:38:00  profilanswer
 

Bonjour,
 
Dans un programme C#, je dois me connecter à une base de données, faire des requetes sur des tables et exporter ces données vers un fichier plat.
 
Ma requete ressemble a ça :
 
strQuery = "SELECT T1.A, T1.B, T1.C FROM T1 JOIN T2 ON T1.D = T2.D AND T1.E = T2.E WHERE T2.F = ....."
 
Puis, j'execute ma requete et recupère le schéma :
 
                _OleDbCommand.Connection = _oleDbConnection;
                _OleDbCommand.CommandText = strQuery;
                myReader = _OleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
 
 
                //Récupération du schéma de la requete
                //pour l'entete de fichier
                schemaTable = myReader.GetSchemaTable();
                 
                // Création de l'entête du fichier
                //Pour chaque colonne du curseur
                while (myReader.Read())
                {
                    if (strEnteteColonne == "" && bolAppendToFile == false)
                    {
                        foreach (DataRow myField in schemaTable.Rows)
                        {
                            ////Récupération du nom du champ
                            if (strEnteteColonne == "" )
                            {
                                strEnteteColonne = myField.ItemArray[0].ToString();
                            }
                            else
                            {
                                strEnteteColonne = strEnteteColonne + "|" + myField.ItemArray[0].ToString();
                            }
                        }
.....
 
Mon problème, c'est qu'au lieu d'avoir dans ma string strEnteteColonne ça :

  • A|B|C


J'ai ça :

  • A|B|C|D|E


En fait, les champs de la jointure apparaissent alors que je ne les veux pas :/ (Pour info, pour les autres requetes sans jointure, ça fonctionne à merveille)
 
J'ai essayé avec une sous requête, j'ai le même problème. Sachant que je ne peux pas faire de vue, auriez vous une solution SVP ?
 
PI : Visual Studio 2008 & Framework 3.0 (je ne peux rien changer ou mettre à jour)


Message édité par SplitForm le 17-12-2009 à 16:15:28
mood
Publicité
Posté le 17-12-2009 à 14:38:00  profilanswer
 

n°1951231
SplitForm
Moomnia !!!
Posté le 17-12-2009 à 15:28:09  profilanswer
 

C'est même pire que prévu, il me fait ça en fait :
 

  • A|B|C|T1.D|T1.E|T2.D|T2.E


Je viens d'essayer en construisant ma requete comme cela :  
 
SELECT T1.A, T1.B, T1.C FROM T1, T2 WHERE T1.D = T2.D AND T1.E = T2.E AND T2.F = .....
 
Et bien ça fait pareil  :cry:

n°1951247
SplitForm
Moomnia !!!
Posté le 17-12-2009 à 16:15:06  profilanswer
 

Bonjour SplitForm  :D  
 
 
Voici la réponse à ton problème. Dans la commande :
 

  • myReader = _OleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);  


il faut retirer CommandBehavior.KeyInfo
 
Ce qui devient :
 

  • myReader = _OleDbCommand.ExecuteReader();  


Bon ben voila, vous l'aurez compris, j'ai trouvé moi même, après 6h de recherche et de tests, la solution !
 
Si ça peut servir à quelqu'un d'autre...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] (RESOLU) GetSchemaTable trop de champs !

 

Sujets relatifs
[RESOLU]Serialize de session/ IE ? :/[Résolu] Copier la structure d'un site
[Résolu] Lien non cliquable sous FirefoxPetite aide en C !
[résolu] création réseau ad-hoc[PERL] Récupération ip/mac de dhcpd.leases [RESOLU]
Ordre des champs lors du "create"Pb avec XML en AS3 [Résolu]
[RESOLU] Modification multiple de champs SQL 
Plus de sujets relatifs à : [C#] (RESOLU) GetSchemaTable trop de champs !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR