GetSchemaTable trop de champs ! [C#] (RESOLU) - C#/.NET managed - Programmation
Marsh Posté le 17-12-2009 à 15:28:09
C'est même pire que prévu, il me fait ça en fait :
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
Marsh Posté le 17-12-2009 à 16:15:06
Bonjour SplitForm
Voici la réponse à ton problème. Dans la commande :
il faut retirer CommandBehavior.KeyInfo
Ce qui devient :
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...
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 :
J'ai ça :
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