Probleme d'insertion sql dans loop FOREACH
Bonjour,
je bloque, je comprend pas.
Alors:
Code:
1 2 3 4
|
List<int> ins_quinzaine_impaire = new List<int>(); //Contient: [0]: 1 [1]: 66
List<DateTime> DatePremierJourSemaine = new List<DateTime>();
//Contient toutes les dates du premier jour des semaines de l'année allant de "Date entree par l'utilisateur" jusque "Date entree par l'utilisateur" |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
nbins = 0;
foreach (int insID in ins_quinzaine_impaire)
{
i = 0;
foreach (DateTime Date in DatePremierJourSemaine)
{
int WoYdate = cal.GetWeekOfYear(Date, CalendarWeekRule.FirstDay, dfi.FirstDayOfWeek); //Return le numero de la semaine de l'année
if (WoYdate % 2 != 0) //si la semaine est impaire
{
PlanID++;
cmd_plan_quinzaine = new SqlCommand(Sql_plan_quinzaine, Connection, transaction); ;
cmd_plan_quinzaine.Parameters.Add("@PlaID", SqlDbType.Int).Value = PlanID;
cmd_plan_quinzaine.Parameters.Add("@PlaDAT", SqlDbType.DateTime).Value = DatePremierJourSemaine[i];
cmd_plan_quinzaine.Parameters.Add("@plaInsID", SqlDbType.Int).Value = ins_quinzaine_impaire[nbins];
cmd_plan_quinzaine.Parameters.Add("@PlaComment", SqlDbType.NVarChar).Value = "Quinzaine Impaire";
cmd_plan_quinzaine.ExecuteNonQuery();
i++;
}
}
} |
pour une date de 01/01/2014 à 01/05/2014
je lit donc: Pour chaque Instrument dans la liste ins_quinzaine_impaire, je parcoure chaque date contenue dans la liste DatePremierJourSemaine, je recupere une variable contenant la semaine dans l'année de la date parcouru et si elle est impaire, je l'insere dans la BDD avec l'instrument
Le resultat attendu dans la BDD:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
2100 2014-01-01 2 Quinzaine Impaire
2101 2014-01-13 2 Quinzaine Impaire
2102 2014-01-27 2 Quinzaine Impaire
2103 2014-02-10 2 Quinzaine Impaire
2104 2014-02-24 2 Quinzaine Impaire
ETC ETC ETC ETC jusque 2014-04-28 ensensuite on passe a l'instrument 67
21xx 2014-01-01 67 Quinzaine Impaire
21xx 2014-01-13 67 Quinzaine Impaire
21xx 2014-01-27 67 Quinzaine Impaire
21xx 2014-02-10 67 Quinzaine Impaire
21xx 2014-02-24 67 Quinzaine Impaire
ETC ETC ETC jusque 2014-04-28 |
Resultat obtenu:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
2099 2014-01-01 2 Quinzaine Impaire
2100 2014-01-06 2 Quinzaine Impaire
2101 2014-01-13 2 Quinzaine Impaire
2102 2014-01-20 2 Quinzaine Impaire
2103 2014-01-27 2 Quinzaine Impaire
2104 2014-02-03 2 Quinzaine Impaire
2105 2014-02-10 2 Quinzaine Impaire
2106 2014-02-17 2 Quinzaine Impaire
2107 2014-02-24 2 Quinzaine Impaire
2108 2014-01-01 67 Quinzaine Impaire
ETC ETC ETC ETC et s'arrete a 2014-02-24 |
on dirait que le: if (WoYdate % 2 != 0) ne tri pas les semaine paire / impaire quand je passe en mode debugging sous visual studio, je met un point d'arret et regarde l'etat de cette ligne à chaque date incrémenté, elle est egale a true quand WoYdate est impaire et false quand WoYdate est paire....
deplus dans la base de données, l'insertion ne vas pas plus loin que la moitié de la date d'intervalle données (je tape du 01/01/2014 à 01/05/2014) les insertions s'arrete à 24/02/2014.
edit: lorsque j'envoie le post sur le forum, les données de la bdd en "[ code ]" sur une ligne se decale, je ne sais pas pourquoi