예제 #1
0
        private void list_make()
        {
            //製品構成情報を部品コードでグループ化し部品毎の合計使用数のdtを作成する
            DataTable w_dt_seihin_kousei = new DataTable();

            w_dt_seihin_kousei = tss.get_seihin_kousei_mattan(tb_seihin_cd.Text.ToString(), tb_seihin_kousei_no.Text.ToString());
            if (w_dt_seihin_kousei.Rows.Count == 0)
            {
                MessageBox.Show("製品構成の部品明細が読み込めませんでした。");
                return;
            }
            //使用数dtを使ってdgvを手動で作成する
            //w_dt_mの空枠の作成
            w_dt_m.Rows.Clear();
            w_dt_m.Columns.Clear();
            w_dt_m.Clear();
            //列の定義
            w_dt_m.Columns.Add("buhin_cd");
            w_dt_m.Columns.Add("buhin_name");
            w_dt_m.Columns.Add("siyou_su");
            w_dt_m.Columns.Add("free_zaiko_su");
            w_dt_m.Columns.Add("lot_zaiko_su");
            w_dt_m.Columns.Add("sonota_zaiko_su");
            w_dt_m.Columns.Add("ttl_zaiko_su");
            w_dt_m.Columns.Add("syori_su");
            w_dt_m.Columns.Add("final_zaiko_su");

            //行追加
            DataRow w_dt_row;
            string  w_dt_buhin_cd;        //部品コード
            string  w_dt_buhin_name;      //部品名
            string  w_dt_siyou_su;        //使用数
            string  w_dt_free_zaiko_su;   //フリー在庫数
            string  w_dt_lot_zaiko_su;    //ロット在庫数
            string  w_dt_sonota_zaiko_su; //その他在庫数
            string  w_dt_ttl_zaiko_su;    //合計在庫数
            string  w_dt_syori_su;        //処理数
            string  w_dt_final_zaiko_su;  //差

            decimal w_dou_siyou_su;       //必要数計算用
            decimal w_dou_syori_su;       //必要数計算用
            decimal w_dou_ttl_zaiko_su;   //差計算用
            decimal w_dou_hituyou_su;     //差計算用

            foreach (DataRow dr in w_dt_seihin_kousei.Rows)
            {
                //dgv作成にあたり、必要な情報を集める
                //部品コード
                w_dt_buhin_cd = dr["buhin_cd"].ToString();
                //部品名
                w_dt_buhin_name = tss.get_buhin_name(dr["buhin_cd"].ToString());
                //使用数
                w_dt_siyou_su = dr[1].ToString();
                //フリー在庫数
                w_dt_free_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "01");
                //ロット在庫数
                w_dt_lot_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "02");
                //その他在庫数
                w_dt_sonota_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "03");
                //合計在庫数
                w_dt_ttl_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "**");
                //処理数
                if (decimal.TryParse(w_dt_siyou_su, out w_dou_siyou_su) && decimal.TryParse(tb_suuryo.Text, out w_dou_syori_su))
                {
                    w_dt_syori_su = (w_dou_siyou_su * w_dou_syori_su).ToString("0.00");
                }
                else
                {
                    w_dt_syori_su = "0.00";
                }
                //最終在庫数
                if (decimal.TryParse(w_dt_ttl_zaiko_su, out w_dou_ttl_zaiko_su) && decimal.TryParse(w_dt_syori_su, out w_dou_hituyou_su))
                {
                    if (rb_nyuuko.Checked == true)
                    {
                        //入庫
                        w_dt_final_zaiko_su = (w_dou_ttl_zaiko_su + w_dou_hituyou_su).ToString("0.00");
                    }
                    else
                    {
                        //出庫
                        w_dt_final_zaiko_su = (w_dou_ttl_zaiko_su + w_dou_hituyou_su * -1).ToString("0.00");
                    }
                }
                else
                {
                    w_dt_final_zaiko_su = "0.00";
                }
                //w_dt_mにレコードを作成
                w_dt_row                    = w_dt_m.NewRow();
                w_dt_row["buhin_cd"]        = w_dt_buhin_cd;
                w_dt_row["buhin_name"]      = w_dt_buhin_name;
                w_dt_row["siyou_su"]        = w_dt_siyou_su;
                w_dt_row["free_zaiko_su"]   = w_dt_free_zaiko_su;
                w_dt_row["lot_zaiko_su"]    = w_dt_lot_zaiko_su;
                w_dt_row["sonota_zaiko_su"] = w_dt_sonota_zaiko_su;
                w_dt_row["ttl_zaiko_su"]    = w_dt_ttl_zaiko_su;
                w_dt_row["syori_su"]        = w_dt_syori_su;
                w_dt_row["final_zaiko_su"]  = w_dt_final_zaiko_su;
                w_dt_m.Rows.Add(w_dt_row);
            }
            list_disp();
        }
예제 #2
0
        private void list_make()
        {
            DataTable w_dt_seihin_kousei = new DataTable();

            //製品構成情報を部品コードでグループ化し部品毎の合計使用数のdtを作成する
            w_dt_seihin_kousei = tss.get_seihin_kousei_mattan(tb_seihin_cd.Text.ToString(), tb_seihin_kousei_no.Text.ToString());
            //w_dt_seihin_kousei = tss.OracleSelect("select buhin_cd,sum(siyou_su) from tss_seihin_kousei_m where seihin_cd = '" + tb_seihin_cd.Text.ToString() + "' and seihin_kousei_no = '" + tb_seihin_kousei_no.Text.ToString() + "' and oya_buhin_cd is null and gokan_buhin_cd is null group by buhin_cd order by buhin_cd asc");
            if (w_dt_seihin_kousei.Rows.Count == 0)
            {
                MessageBox.Show("製品構成の部品明細が読み込めませんでした。");
                return;
            }
            //使用数dtを使ってdgvを手動で作成する
            //w_dt_mの空枠の作成
            w_dt_m.Rows.Clear();
            w_dt_m.Columns.Clear();
            w_dt_m.Clear();
            //w_dt_m = null;
            //列の定義
            w_dt_m.Columns.Add("buhin_cd");
            w_dt_m.Columns.Add("buhin_name");
            w_dt_m.Columns.Add("siyou_su");
            w_dt_m.Columns.Add("free_zaiko_su");
            w_dt_m.Columns.Add("sitei_lot_zaiko_su");
            w_dt_m.Columns.Add("lot_zaiko_su");
            w_dt_m.Columns.Add("sonota_zaiko_su");
            w_dt_m.Columns.Add("ttl_zaiko_su");
            w_dt_m.Columns.Add("hituyou_su");
            w_dt_m.Columns.Add("sa");

            //行追加
            DataRow w_dt_row;
            string  w_dt_buhin_cd;           //部品コード
            string  w_dt_buhin_name;         //部品名
            string  w_dt_siyou_su;           //使用数
            string  w_dt_free_zaiko_su;      //フリー在庫数
            string  w_dt_sitei_lot_zaiko_su; //指定ロット在庫数
            string  w_dt_lot_zaiko_su;       //ロット在庫数
            string  w_dt_sonota_zaiko_su;    //その他在庫数
            string  w_dt_ttl_zaiko_su;       //合計在庫数
            string  w_dt_hituyou_su;         //必要数
            string  w_dt_sa;                 //差
            decimal w_dou_siyou_su;          //必要数計算用
            decimal w_dou_seisan_su;         //必要数計算用
            decimal w_dou_ttl_zaiko_su;      //差計算用
            decimal w_dou_hituyou_su;        //差計算用
            decimal w_seisan_kanou_su;       //生産可能数計算用
            decimal w_seisan_kanou_su2;      //生産可能数計算用

            w_seisan_kanou_su = decimal.Parse("9999999999.99");
            foreach (DataRow dr in w_dt_seihin_kousei.Rows)
            {
                //dgv作成にあたり、必要な情報を集める
                //部品コード
                w_dt_buhin_cd = dr["buhin_cd"].ToString();
                //部品名
                w_dt_buhin_name = tss.get_buhin_name(dr["buhin_cd"].ToString());
                //使用数
                w_dt_siyou_su = dr[1].ToString();
                //フリー在庫数
                w_dt_free_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "01");
                //指定ロット在庫数
                if (tb_juchu_cd2.Text == "")
                {
                    w_dt_sitei_lot_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "02", tb_torihikisaki_cd.Text.ToString(), tb_juchu_cd1.Text.ToString(), "9999999999999999");
                }
                else
                {
                    w_dt_sitei_lot_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "02", tb_torihikisaki_cd.Text.ToString(), tb_juchu_cd1.Text.ToString(), tb_juchu_cd2.Text.ToString());
                }
                //ロット在庫数
                w_dt_lot_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "02");
                //その他在庫数
                w_dt_sonota_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "03");
                //合計在庫数
                w_dt_ttl_zaiko_su = tss.get_zaiko(dr["buhin_cd"].ToString(), "**");
                //必要数
                if (decimal.TryParse(w_dt_siyou_su, out w_dou_siyou_su) && decimal.TryParse(tb_seisan_sitai_daisuu.Text, out w_dou_seisan_su))
                {
                    w_dt_hituyou_su = (w_dou_siyou_su * w_dou_seisan_su).ToString("0.00");
                }
                else
                {
                    w_dt_hituyou_su = "0.00";
                }
                //差
                if (decimal.TryParse(w_dt_ttl_zaiko_su, out w_dou_ttl_zaiko_su) && decimal.TryParse(w_dt_hituyou_su, out w_dou_hituyou_su))
                {
                    w_dt_sa = (w_dou_ttl_zaiko_su - w_dou_hituyou_su).ToString("0.00");
                }
                else
                {
                    w_dt_sa = "0.00";
                }
                //w_dt_mにレコードを作成
                w_dt_row                       = w_dt_m.NewRow();
                w_dt_row["buhin_cd"]           = w_dt_buhin_cd;
                w_dt_row["buhin_name"]         = w_dt_buhin_name;
                w_dt_row["siyou_su"]           = w_dt_siyou_su;
                w_dt_row["free_zaiko_su"]      = w_dt_free_zaiko_su;
                w_dt_row["sitei_lot_zaiko_su"] = w_dt_sitei_lot_zaiko_su;
                w_dt_row["lot_zaiko_su"]       = w_dt_lot_zaiko_su;

                if (w_dt_sitei_lot_zaiko_su != "" && w_dt_lot_zaiko_su != "")
                {
                    w_dt_row["lot_zaiko_su"] = (decimal.Parse(w_dt_lot_zaiko_su) - decimal.Parse(w_dt_sitei_lot_zaiko_su)).ToString();
                }
                else
                {
                    //w_dt_row["lot_zaiko_su"] = (decimal.Parse(w_dt_lot_zaiko_su) - decimal.Parse(w_dt_sitei_lot_zaiko_su)).ToString();
                }
                //w_dt_row["lot_zaiko_su"] = w_dt_lot_zaiko_su;

                w_dt_row["sonota_zaiko_su"] = w_dt_sonota_zaiko_su;
                w_dt_row["ttl_zaiko_su"]    = w_dt_ttl_zaiko_su;
                w_dt_row["hituyou_su"]      = w_dt_hituyou_su;
                w_dt_row["sa"] = w_dt_sa;
                w_dt_m.Rows.Add(w_dt_row);
                //生産可能数の算出
                if (w_dou_ttl_zaiko_su == 0)
                {
                    w_seisan_kanou_su2 = 0;
                }
                else
                {
                    if (w_dou_siyou_su == 0)
                    {
                        w_seisan_kanou_su2 = w_dou_ttl_zaiko_su;
                    }
                    else
                    {
                        w_seisan_kanou_su2 = Math.Truncate(w_dou_ttl_zaiko_su / w_dou_siyou_su);
                    }
                }
                if (w_seisan_kanou_su > w_seisan_kanou_su2)
                {
                    w_seisan_kanou_su = w_seisan_kanou_su2;
                }
            }
            list_disp();
            tb_seisan_kanou_daisuu.Text = w_seisan_kanou_su.ToString();
        }