private void toolStripButton5_Click(object sender, EventArgs e) { try { FicheStock j = new FicheStock(); j.DataSource = glossaire.Instance.sortieStock(); ReportPrintTool printTool = new ReportPrintTool(j); printTool.ShowPreviewDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void loadReport2() { try { if (rdEntreeSorties.Checked) { #region Fiche de stock avec sorties et entrées FicheStock rpt = new FicheStock(); SqlCommand cmd = null; bool ok_execute_query = false; if (chkTous.Checked) { #region Tous //Mise à jour dans la table tempStock con = new SqlConnection(clsMetier.strChaineConnection); con.Open(); SqlCommand cmdTemp = con.CreateCommand(); cmd = new SqlCommand(@"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) AS prixTotalVente,sortie.stock_in AS stock_in FROM article RIGHT JOIN sortie ON article.id=sortie.id_article RIGHT JOIN livraison ON article.id=livraison.id_article WHERE article.desination IS NOT NULL AND article.fiche_supplementaire=0 ORDER BY article.desination ASC", clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; #endregion } else if (!chkTous.Checked && rdJournalier.Checked) { #region Journalier //Mise à jour dans la table tempStock string s = txtDate.Value.ToShortDateString().ToString().Substring(0, 10); con = new SqlConnection(clsMetier.strChaineConnection); con.Open(); string goodQuery = ""; bool okEntree = false; //Est vrai s'il ya au moins une entrée à une date X et faux dans le cas contraire bool okSortie = false; //Est vrai s'il ya au moins une sorie à une date X et faux dans le cas contraire //On commence par vérifier le nombre d'enregistrement pour sortie et des entrée pour une date X //Si c'est >=1 alors on exécute le first bloc dans le cas contraire le second car n'a pas de correspond des deux côté (Entree et Sortie) IDbCommand commande1 = con.CreateCommand(); commande1.CommandText = "SELECT COUNT(livraison.id) AS nbr_Rec FROM livraison WHERE livraison.date='" + s + "'"; IDataReader reader1 = commande1.ExecuteReader(); if (reader1.Read()) { if (Convert.ToInt32(reader1["nbr_Rec"]) >= 1) { okEntree = true; } } reader1.Dispose(); commande1.Dispose(); IDbCommand commande2 = con.CreateCommand(); commande2.CommandText = "SELECT COUNT(sortie.id) AS nbr_Rec FROM sortie WHERE sortie.date='" + s + "'"; IDataReader reader2 = commande2.ExecuteReader(); if (reader2.Read()) { if (Convert.ToInt32(reader2["nbr_Rec"]) >= 1) { okSortie = true; } } reader2.Dispose(); commande2.Dispose(); SqlCommand cmdTemp = con.CreateCommand(); //Selection de la requete principale à exécuter if (okEntree == true && okSortie == true) { //On a au moins une entré et au moin une sortie pour une même date X //Requete qui va générer le report goodQuery = @"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) AS prixTotalVente,sortie.stock_in AS stock_in FROM article RIGHT JOIN sortie ON article.id=sortie.id_article RIGHT JOIN livraison ON article.id=livraison.id_article WHERE article.desination IS NOT NULL AND sortie.date='" + s + "' AND livraison.date='" + s + "' AND article.fiche_supplementaire=0 ORDER BY article.desination ASC"; } else if (okEntree == false && okSortie == true) { //On a une entrée pour une date X et non une sortie pour la même date //Requete qui va générer le report goodQuery = @"SELECT article.id,article.desination, '-' AS dateEntree,'-' AS qteEntree,'-' AS puAchat,'-' AS prixTotalAchat,'-' AS stock_out,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) AS prixTotalVente,sortie.stock_in AS stock_in FROM article FULL JOIN sortie ON article.id=sortie.id_article RIGHT JOIN livraison ON article.id=livraison.id_article WHERE article.desination IS NOT NULL AND sortie.date='" + s + "' AND article.fiche_supplementaire=0 ORDER BY article.desination ASC"; } else if (okEntree == true && okSortie == false) { //On a une entrée pour une date X et non une sortie pour la même date //Requete qui va générer le report goodQuery = @"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out,'-' AS dtSortie, '-' AS qteSortie,'-' AS pu,'-' AS prixTotalVente,'-' AS stock_in FROM article INNER JOIN livraison ON article.id=livraison.id_article FULL JOIN sortie ON article.id=sortie.id_article WHERE article.desination IS NOT NULL AND livraison.date='" + s + "' AND article.fiche_supplementaire=0 ORDER BY article.desination ASC"; } if (string.IsNullOrEmpty(goodQuery)) { MessageBox.Show("Il n'ya rien à afficher", "Affichage de la fiche de stock", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); ok_execute_query = false; con.Close(); } else { cmdTemp.CommandText = goodQuery; int v = cmdTemp.ExecuteNonQuery(); con.Close(); cmd = new SqlCommand(goodQuery, clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; } #endregion } else if (!chkTous.Checked && rdMensuel.Checked) { #region Mensuel //Mise à jour dans la table tempStock string[] tb = cboMois.Text.Split('/'); int s = Convert.ToInt32(tb[0]); con = new SqlConnection(clsMetier.strChaineConnection); con.Open(); string goodQuery = ""; bool okEntree = false; //Est vrai s'il ya au moins une entrée à une date X et faux dans le cas contraire bool okSortie = false; //Est vrai s'il ya au moins une sorie à une date X et faux dans le cas contraire //On commence par vérifier le nombre d'enregistrement pour sortie et des entrée pour une date X //Si c'est >=1 alors on exécute le first bloc dans le cas contraire le second car n'a pas de correspond des deux côté (Entree et Sortie) IDbCommand commande1 = con.CreateCommand(); commande1.CommandText = "SELECT COUNT(livraison.id) AS nbr_Rec FROM livraison WHERE MONTH(livraison.date)=" + s; IDataReader reader1 = commande1.ExecuteReader(); if (reader1.Read()) { if (Convert.ToInt32(reader1["nbr_Rec"]) >= 1) { okEntree = true; } } reader1.Dispose(); commande1.Dispose(); IDbCommand commande2 = con.CreateCommand(); commande2.CommandText = "SELECT COUNT(sortie.id) AS nbr_Rec FROM sortie WHERE MONTH(sortie.date)=" + s; IDataReader reader2 = commande2.ExecuteReader(); if (reader2.Read()) { if (Convert.ToInt32(reader2["nbr_Rec"]) >= 1) { okSortie = true; } } reader2.Dispose(); commande2.Dispose(); SqlCommand cmdTemp = con.CreateCommand(); //Selection de la requete principale à exécuter if (okEntree == true && okSortie == true) { //On a au moins une entré et au moin une sortie pour une même date X //Requete qui va générer le report goodQuery = @"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) prixTotalVente,sortie.stock_in AS stock_in FROM article RIGHT JOIN sortie ON article.id=sortie.id_article RIGHT JOIN livraison ON article.id=livraison.id_article WHERE article.desination IS NOT NULL AND MONTH(sortie.date)=" + s + " AND MONTH(livraison.date)=" + s + @" AND article.fiche_supplementaire=0 ORDER BY article.desination ASC"; } else if (okEntree == true && okSortie == false) { //On a une entrée pour une date X et non une sortie pour la même date //Requete qui va générer le report goodQuery = @"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out,'-' AS dtSortie, '-' AS qteSortie,'-' AS pu,'-' AS prixTotalVente,'-' AS stock_in FROM article INNER JOIN livraison ON article.id=livraison.id_article FULL JOIN sortie ON article.id=sortie.id_article WHERE article.desination IS NOT NULL AND MONTH(livraison.date)=" + s + @" AND article.fiche_supplementaire=0 ORDER BY article.desination ASC"; } else if (okEntree == false && okSortie == true) { //On a une sortie pour une date X et non une entree pour la même date //Requete qui va générer le report goodQuery = @"SELECT article.id,article.desination, '-' AS dateEntree,'-' AS qteEntree,'-' AS puAchat,'-' AS prixTotalAchat,'-' AS stock_out,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) AS prixTotalVente,sortie.stock_in AS stock_in FROM article FULL JOIN sortie ON article.id=sortie.id_article RIGHT JOIN livraison ON article.id=livraison.id_article WHERE article.desination IS NOT NULL AND MONTH(sortie.date)=" + s + @" AND article.fiche_supplementaire=0 ORDER BY article.desination ASC"; } if (string.IsNullOrEmpty(goodQuery)) { MessageBox.Show("Il n'ya rien à afficher", "Affichage de la fiche de stock", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); ok_execute_query = false; con.Close(); } else { cmdTemp.CommandText = goodQuery; int v = cmdTemp.ExecuteNonQuery(); con.Close(); cmd = new SqlCommand(goodQuery, clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; } #endregion } if (ok_execute_query) { //Chargement report SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "doc"); rpt.SetDataSource(ds.Tables["doc"]); crvSatistiquePharmacie.ReportSource = rpt; crvSatistiquePharmacie.Refresh(); da.Dispose(); ds.Dispose(); cmd.Dispose(); } #endregion } else if (rdEntreeSeul.Checked) { #region Rapport pour entrées seulement FicheStock_Entrees rpt = new FicheStock_Entrees(); SqlCommand cmd = null; bool ok_execute_query = false; if (chkTous.Checked) { #region Tous //Mise à jour dans la table tempStock con = new SqlConnection(clsMetier.strChaineConnection); con.Open(); ok_execute_query = true; cmd = new SqlCommand(@"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out FROM article INNER JOIN livraison ON article.id=livraison.id_article WHERE article.fiche_supplementaire=0 ORDER BY article.desination ASC", clsMetier.GetInstance().InitializeReport()); #endregion } else if (!chkTous.Checked && rdJournalier.Checked) { #region Journalier //Mise à jour dans la table tempStock string s = txtDate.Value.ToShortDateString().ToString().Substring(0, 10); con = new SqlConnection(clsMetier.strChaineConnection); con.Open(); //Requete qui va générer le report cmd = new SqlCommand(@"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out FROM article INNER JOIN livraison ON article.id=livraison.id_article WHERE livraison.date='" + s + "' AND article.fiche_supplementaire=0 ORDER BY article.desination ASC", clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; #endregion } else if (!chkTous.Checked && rdMensuel.Checked) { #region Mensuel //Mise à jour dans la table tempStock string[] tb = cboMois.Text.Split('/'); int s = Convert.ToInt32(tb[0]); //con = new SqlConnection(clsMetier.strChaineConnection); //con.Open(); //Requete qui va générer le report cmd = new SqlCommand(@"SELECT article.id,article.desination, livraison.date AS dateEntree,ISNULL(livraison.quantinte,0) AS qteEntree,ISNULL(livraison.puAchat,0) AS puAchat,ISNULL(livraison.puAchat*livraison.quantinte,0) AS prixTotalAchat,livraison.stock_out AS stock_out FROM article INNER JOIN livraison ON article.id=livraison.id_article WHERE MONTH(livraison.date)=" + s + " AND article.fiche_supplementaire=0 ORDER BY article.desination ASC", clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; #endregion } if (ok_execute_query) { //Chargement report SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "doc"); rpt.SetDataSource(ds.Tables["doc"]); crvSatistiquePharmacie.ReportSource = rpt; crvSatistiquePharmacie.Refresh(); da.Dispose(); ds.Dispose(); cmd.Dispose(); } #endregion } else if (rdSortiesSeul.Checked) { #region Rapport pour sorties seulement FicheStock_Sorties rpt = new FicheStock_Sorties(); SqlCommand cmd = null; bool ok_execute_query = false; if (chkTous.Checked) { #region Tous //Mise à jour dans la table tempStock //con = new SqlConnection(clsMetier.strChaineConnection); //con.Open(); cmd = new SqlCommand(@"SELECT article.id,article.desination,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) prixTotalVente,sortie.stock_in AS stock_in FROM article INNER JOIN sortie ON sortie.id_article=article.id WHERE article.fiche_supplementaire=0 ORDER BY article.desination ASC", clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; #endregion } else if (!chkTous.Checked && rdJournalier.Checked) { #region Journalier //Mise à jour dans la table tempStock string s = txtDate.Value.ToShortDateString().ToString().Substring(0, 10); //con = new SqlConnection(clsMetier.strChaineConnection); //con.Open(); //Requete qui va générer le report cmd = new SqlCommand(@"SELECT article.id,article.desination,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) prixTotalVente,sortie.stock_in AS stock_in FROM article INNER JOIN sortie ON sortie.id_article=article.id WHERE sortie.date='" + s + "' AND article.fiche_supplementaire=0 ORDER BY article.desination ASC", clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; #endregion } else if (!chkTous.Checked && rdMensuel.Checked) { #region Mensuel //Mise à jour dans la table tempStock string[] tb = cboMois.Text.Split('/'); int s = Convert.ToInt32(tb[0]); //con = new SqlConnection(clsMetier.strChaineConnection); //con.Open(); cmd = new SqlCommand(@"SELECT article.id,article.desination,sortie.date AS dtSortie, ISNULL(sortie.quantinte,0) AS qteSortie,ISNULL(article.pu,0) AS pu,ISNULL(sortie.quantinte*article.pu,0) prixTotalVente,sortie.stock_in AS stock_in FROM article INNER JOIN sortie ON sortie.id_article=article.id WHERE MONTH(sortie.date)=" + s + " AND article.fiche_supplementaire=0 ORDER BY article.desination ASC", clsMetier.GetInstance().InitializeReport()); ok_execute_query = true; #endregion } if (ok_execute_query) { //Chargement report SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "doc"); rpt.SetDataSource(ds.Tables["doc"]); crvSatistiquePharmacie.ReportSource = rpt; crvSatistiquePharmacie.Refresh(); da.Dispose(); ds.Dispose(); cmd.Dispose(); } #endregion } } catch (Exception e) { MessageBox.Show(e.Message + ">> Erreur lors de l'ouverture du rapport", "Rapport", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }