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

GetSchemaTable trop de champs ! [C#] (RESOLU) - C#/.NET managed - Programmation

Marsh Posté le 17-12-2009 à 14:38:00    

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
Reply

Marsh Posté le 17-12-2009 à 14:38:00   

Reply

Marsh Posté le 17-12-2009 à 15:28:09    

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:

Reply

Marsh Posté le 17-12-2009 à 16:15:06    

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...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed