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

C# Discussion :

Requete sql visual studio c# retourne plusieurs fois la m�me ligne [D�butant]


Sujet :

C#

  1. #1
    Membre �prouv�
    Homme Profil pro
    Analyse syst�me
    Inscrit en
    Juin 2013
    Messages
    976
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Analyse syst�me
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par d�faut Requete sql visual studio c# retourne plusieurs fois la m�me ligne
    Bonjour,
    j'ai un programme c# qui prend un fichier en entr�e et qui dois me cr�er un fichire excel en sortie.
    Dans mon programme, j'execute une requete sql, mais dans le fichier excel en sortie, j'ai plusieurs fois la m�me ligne, je ne sais pas si je m'y prend bien dans mon programme c# pour faire ma requete sql, voici mon code :


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    repexc = folderBrowserDialog2.SelectedPath + "\\monfichier" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".xlsx";
    -........
    .........
    //sirens est un tableau avec une liste de sirens
    try
    	{
    		MySqlCommand cmd = new MySqlCommand();
     
     
    		for (int a = 0; a < sirens.Count; a++)
    		{
     
    				 marequete = " select t1.NUMSIR  , " +   //1
    					 "t1.CCOD, " +
    					 "t0.MONtant,  " +
    					 "t0.SOLDAT,  " +
    					 "t0.ADHFER,  " + //5
    					 "t1.numeroadh, " +
    					 "t1.fichier, " +
    					 "t1.RAISO2, " +
    					 "t1.RAISOC, " +
    					 "date_format(t1.debutdate, '%m/%d/%Y') , " + //10
    					 "t1.FINDATe, " +
    					 "t1.DATRECe, " +
    					 "t1.EMITOTale, " +
    					 "t2.EMILIBelle, " +
    					 "t2.EMIBASe, " +
    					 "t2.EMICOE, " +  //16
    					 "t2.EMINETe,  " +
    					 "t2.EMICOTisation,  " +
    					 "t2.EMIMT, " +
    					 "t3.ENCTOTale, " +  //20
    					 "t3.ENCDEB, " +
    					 "t3.ENCFIN " +
    			 " from 000pf t0 " +
    			 " left join Table001 t1 on t1.NUMSIR = t0.NUMSIR " + //rajout 
    			 " left join Table002 t2 on  t1.NUMSIR = t2.NUMSIR  and t1.NOMFIC = t2.NOMFIC " + 
    			 " left join Table003 t3 on t3.NUMSIR = t2.NUMSIR    " +		                                      
    			" where t0.numsir = " + sirens[a] + "" +
    			 " and t1.NOMFIC = '" + fichierEnEntrée + " '";
    			;
     
    			cmd = new MySqlCommand(marequete, conn);
     
    			monreader = cmd.ExecuteReader();
     
    			 if (monreader.Read()) //while                                            
    			{
    				//premier reader
    				ws.Cells[cptCol, 1] = ReturnReaderValue(monreader, 0); 
    				ws.Cells[cptCol, 2] = ReturnReaderValue(monreader, 1);                           
    				ws.Cells[cptCol, 3] = ReturnReaderValue(monreader, 2); //SOLMON
    				ws.Cells[cptCol, 4] = ReturnReaderValue(monreader, 3);  //SOLDAT 
    				ws.Cells[cptCol, 5] = ReturnReaderValue(monreader, 4);  //ADHFER
    				ws.Cells[cptCol, 6] = ReturnReaderValue(monreader, 5);  //MATADH                 
    				ws.Cells[cptCol, 7] = ReturnReaderValue(monreader, 6); //NOMFIC
    				ws.Cells[cptCol, 8] = ReturnReaderValue(monreader, 7);  //RAISO2                                                                                
    				ws.Cells[cptCol, 9] = ReturnReaderValue(monreader, 8);   //RAISOC
    				ws.Cells[cptCol, 10] = ReturnReaderValue(monreader, 9);  //DEBDAT
    				ws.Cells[cptCol, 11] = ReturnReaderValue(monreader, 10); //FINDAT
    				ws.Cells[cptCol, 12] = ReturnReaderValue(monreader, 11);  //DATREC
     
    				//rajout
    				ws.Cells[cptCol, 13] = ReturnReaderValue(monreader, 12);  //EMITOT
    				ws.Cells[cptCol, 14] = ReturnReaderValue(monreader, 13);  //EMILIB
    				ws.Cells[cptCol, 15] = ReturnReaderValue(monreader, 14);  //EMIBAS
    				ws.Cells[cptCol, 16] = ReturnReaderValue(monreader, 15);  //EMICOE
    				ws.Cells[cptCol, 17] = ReturnReaderValue(monreader, 16);  //EMINET
    				ws.Cells[cptCol, 18] = ReturnReaderValue(monreader, 17);//EMICOT
    				ws.Cells[cptCol, 19] = ReturnReaderValue(monreader, 18);//EMIMT
    				ws.Cells[cptCol, 20] = ReturnReaderValue(monreader, 19); //ENCTOT
    				ws.Cells[cptCol, 21] = ReturnReaderValue(monreader, 20); //ENCDEB
    				ws.Cells[cptCol, 22] = ReturnReaderValue(monreader, 21); //ENCFIN
    				cptCol++;		
    			}
    			else
    			{
    			   // ws.Cells[cptCol, 1] = sirens[a];
    			   // cptCol++;
    		   }
    			mabarre.PerformStep();
    			log.Info("compteur :" + compteur);
    			compteur++;
    			lblres.Text = compteur.ToString();			
    			monreader.Close();
    			monreader.Dispose();
     
    		cmd.Dispose();
    	}//fin for
    ....
    ....
    	ws.SaveAs(repexc, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    j'ai �galement joints un fichire excel avec le resultat que j'obtiens en jaune et des lignes en vert, r�sultat que je dois avoir.
    Normalement il doit parcourir les �l�ments de ma base et me r�cup�rer des valeurs diff�rentes, mais par exemple, pour un siren donn�e, il me multiplie ma ligne.

    j'ai l'impression qu'il garde les m�mes donn�es quand j'appele ma requete sql dans mon programme.

    Merci pour votre aide.
    Fichiers attach�s Fichiers attach�s

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 593
    D�tails du profil
    Informations personnelles :
    �ge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 593
    Par d�faut
    Tu as v�rifi� que sirens contient bien tes diff�rents num�ros et pas le m�me plusieurs fois ?

  3. #3
    Expert confirm�

    Avatar de Fran�ois DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Consultant informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par d�faut
    Plusieurs pistes :
    • tu utilises des jointures, donc potentiellement, cela peut multiplier les enregistrements si ce ne sont pas des relations 1-1
    • quel est le code de la fonction ReturnReaderValue ? (j'ai un truc en t�te qui pourrait expliquer cela mais je dois voir le code pour confirmer/infirmer)

  4. #4
    Membre actif
    Homme Profil pro
    Alternant
    Inscrit en
    Octobre 2019
    Messages
    48
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France, Jura (Franche Comt�)

    Informations professionnelles :
    Activit� : Alternant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 48
    Par d�faut
    Tu devrais utiliser Linq pour te faciliter la t�che afin d'�tre s�r d'avoir de bonnes relations en g�n�rant la bdd ou simplement en cr�ant les liens dans les classes

  5. #5
    Membre �prouv�
    Homme Profil pro
    Analyse syst�me
    Inscrit en
    Juin 2013
    Messages
    976
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Analyse syst�me
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par d�faut
    Bonjour,
    merci tout es ok.
    Cordialement

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AC-365] Ins�rer plusieurs fois les m�mes lignes dans une table
    Par isabelle b dans le forum IHM
    R�ponses: 6
    Dernier message: 24/02/2020, 09h18
  2. R�ponses: 8
    Dernier message: 12/06/2018, 09h07
  3. VBA - Dupliquer plusieurs fois la m�me ligne
    Par Max_Mer dans le forum Excel
    R�ponses: 2
    Dernier message: 14/03/2016, 09h17
  4. R�ponses: 13
    Dernier message: 13/08/2007, 14h29

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