Flux de données [Résolu]

Messages postés
10
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
20 janvier 2008
- - Dernière réponse : JiPe86
Messages postés
10
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
20 janvier 2008
- 11 oct. 2006 à 19:30
Salut
Je suis en train de dev une appli Windows Form avec VS2005 et C#.
Connectée à une Bd Access, l'appli exporte une table en .txt
 
Mon gros soucis :
Je souhaite convertir les valeurs d'un champ précis avec un Switch or je ne n'arrive pas à tester le contenu du champ ...
Il faut, je pense, que je récupère la valeur du champ (qui est de type texte)puis la tester avec un switch pour lui affecter la valeur correspondante.


Je vous montre un bout de mon code si ca peut vous aider :




foreach (DataRow row in ds.Tables["Client"].Rows)
{
int cnt = ds.Tables["Client"].Columns.Count;





   //cnt = nombre de colonne
   //i = le numéro de colonne "active"
    for (int i = 0; i < cnt; i++)
    {
        // correspond au champ à analyser
                if (cnt == 6)
                    //transforme le contenu si code fichier1
                {
                    //###A ce niveau je cale ...###
                    string contenu = (string)sw.Write(row[i]);
                    switch (contenu)
                    {
                        case contenu = "CCL":
                            sw.Write("toto");
                            break;
                        case contenu = "PPT":
                            sw.Write("titi");
                            break;
                        default:
                            sw.Write("");
                            break;
                            //etc...
                    }





                }
       
        sw.Write(row[i]);
        sw.Write(";");
    }
    sw.Write(sw.NewLine);
   
}



Merci bcp pour votre aide !! mon projet est pour hier ! :cry: :cry:
JPhi
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
10
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
20 janvier 2008
3
Merci
J'ai trouvé !!

pour ceux que ca intéresse voilà mon code

procédure qui extrait donc une table d'un fichier Access vers un fichier texte en modifiant le contenu des champs Codefichier1 et Codefichier2...
VS2005 et C#2.0

#region

TRANSFERT DONNEES

private
void testerLaConnexionToolStripMenuItem_Click(
object sender,
EventArgs e){
string costr @"provider Microsoft.Jet.OLEDB.4.0; data source=chemin\mabase.mdb";

OleDbConnection co =
new
OleDbConnection(costr);

OleDbCommand cmd =
new
OleDbCommand();

try{

co.Open();

cmd.Connection = co;

cmd.CommandText =

"SELECT RECAPITULATIF.[DATE ENTREE], RECAPITULATIF.[HEURE ENTREE], RECAPITULATIF.[POIDS ENTREE], RECAPITULATIF.[POIDS SORTIE], RECAPITULATIF.[POIDS NET], RECAPITULATIF.[CODE FICHIER 1], RECAPITULATIF.[CODE FICHIER 2]FROM RECAPITULATIF WHERE (((RECAPITULATIF.[CODE SOCIETE])=2 Or (RECAPITULATIF.[CODE SOCIETE])=3))";

DataSet ds =
new
DataSet();

OleDbDataAdapter da =
new
OleDbDataAdapter(cmd);
da.Fill(ds,
"Client");

MessageBox.Show(
"Creation du fichier txt");

FileStream fileStream =
new System.IO.
FileStream(
@"chemin\test.txt", System.IO.
FileMode.Create);

StreamWriter sw =
new
StreamWriter(fileStream);

//Debut du transfert de données
MessageBox.Show(
"Ajout de donn‚es...");

foreach (
DataRow row
in ds.Tables[
"Client"].Rows)
{

int cnt = ds.Tables[
"Client"].Columns.Count;

//cnt = nombre de colonne
//i = le num‚ro de colonne "active"

for (
int i = 0; i < cnt; i++)
{

// correspond au champ … analyser
if (i == 5)

//transforme le contenu si code fichier1
{

//TEST le contenu du champ Codefichier1
//contenu = contenu texte(string) de la ligne i

string contenu = ((
string)(row[i]));

switch (contenu)
{

case
"CPMV":
sw.Write(
"");
sw.Write(
"qqqqqqqqqqqqqqqqqqqqqqqqqqq");
sw.Write(
";");

break;

case
"PPT":
sw.Write(
"titi");
sw.Write(
";");

break;

default:
sw.Write(
"");
sw.Write(
";");
b
reak;

//etc...}

}

else
if (i == 6)
{
//TEST le contenu du champ Codefichier2
string contenu = ((
string)(row[i]));

switch (contenu)
{
C
ase
"CS":
sw.Write(
"");
sw.Write(
"xxxxxxxxxxxxxxxxxxxxx");
sw.Write(
";");

break;

case
"PPT":
sw.Write(
"titi");
sw.Write(
";");

break;

default:
sw.Write(
"");
sw.Write(
";");

break;

//etc...}

}

else
{
sw.Write(row[i]);
sw.Write(
";");
}

}

sw.Write(sw.NewLine);

}

MessageBox.Show(
"Normalement c'est fait /// :/");

}
catch
{

MessageBox.Show(
"Gros Pb !!!");
}
f
inally{

if (co.State ==
ConnectionState.Open) co.Close();}

}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de JiPe86