Example #1
0
        private void bcr_syori(string in_str)
        {
            string out_01 = tss.StringMidByte(in_str, 0, 3);     //バーコード識別文字

            //頭の3文字が「SJ1」でない
            if (out_01 != pub_bcr_identification)
            {
                Console.Beep(1500, 500);
                lbl_msg1.Text      = "不明なバーコードです。( != " + pub_bcr_identification + " )";
                lbl_msg1.ForeColor = Color.Red;
            }
            else
            {
                //正常読み込み
                pub_bcr_moji = in_str;
                this.Close();
            }
        }
        private void btn_barcode_Click(object sender, EventArgs e)
        {
            DataTable w_dt = new DataTable();
            string    w_bcr_moji; //戻り値のバーコード文字列

            frm_bcr frm_bcr = new frm_bcr();

            //バーコード読込画面への受け渡しデータ
            frm_bcr.pub_form_text          = "生産指示日報 バーコード読み込み";
            frm_bcr.pub_msg1               = "生産指示日報のバーコードをスキャンしてください。";
            frm_bcr.pub_msg2               = "";
            frm_bcr.pub_msg3               = "";
            frm_bcr.pub_msg4               = "";
            frm_bcr.pub_bcr_identification = "SJ1";
            frm_bcr.pub_length             = 64;
            //バーコード読込画面表示
            frm_bcr.ShowDialog(this);
            //バーコード読込画面が閉じられた後の処理
            w_bcr_moji = frm_bcr.pub_bcr_moji;
            frm_bcr.Dispose();

            if (w_bcr_moji == "CANCEL")
            {
                //バーコード読込画面でキャンセルされた
                return;
            }
            if (w_bcr_moji == null)
            {
                //バーコード読込画面でエラーが発生した
                return;
            }
            //読み込んだバーコード文字列を分解し画面に表示
            tb_bcr.Text               = w_bcr_moji;
            tb_seisanbi.Text          = tss.StringMidByte(w_bcr_moji, 3, 10).TrimEnd();
            tb_busyo_cd.Text          = tss.StringMidByte(w_bcr_moji, 13, 4).TrimEnd();
            tb_busyo_name.Text        = tss.get_busyo_name(tb_busyo_cd.Text);
            tb_koutei_cd.Text         = tss.StringMidByte(w_bcr_moji, 17, 3).TrimEnd();
            tb_koutei_name.Text       = tss.get_koutei_name(tb_koutei_cd.Text);
            tb_line_cd.Text           = tss.StringMidByte(w_bcr_moji, 20, 3).TrimEnd();
            tb_line_name.Text         = tss.get_line_name(tb_line_cd.Text);
            tb_schedule_seq.Text      = tss.StringMidByte(w_bcr_moji, 23, 3).TrimEnd();
            tb_torihikisaki_cd.Text   = tss.StringMidByte(w_bcr_moji, 26, 6).TrimEnd();
            tb_torihikisaki_name.Text = tss.get_torihikisaki_name(tb_torihikisaki_cd.Text);
            tb_juchu_cd1.Text         = tss.StringMidByte(w_bcr_moji, 32, 16).TrimEnd();
            tb_juchu_cd2.Text         = tss.StringMidByte(w_bcr_moji, 48, 16).TrimEnd();
            tb_juchu_su.Text          = tss.get_juchu_juchu_su(tb_torihikisaki_cd.Text, tb_juchu_cd1.Text, tb_juchu_cd2.Text);
            tb_seisan_zumi_su.Text    = tss.get_seisan_su(tb_torihikisaki_cd.Text, tb_juchu_cd1.Text, tb_juchu_cd2.Text);
            tb_seisankisyu.Text       = tss.get_seisankisyu(tb_seihin_cd.Text, tb_koutei_cd.Text);
            //同一バーコードの生産実績があるか確認
            w_dt = read_seisan_jisseki();
            if (w_dt.Rows.Count >= 1)
            {
                //同一のバーコードが生産実績に存在する場合
                //「既に入力済み」であることを表示し、選択画面で選択させる(選択=修正、選択しない=新規(別の行として)入力、戻る=キャンセル)
                //選択画面へ
                jisseki_select(w_dt);
            }
            else
            {
                //同一バーコードが生産実績に存在しない場合
                //新規に入力
                tb_seihin_cd.Text   = tss.get_juchu_to_seihin_cd(tb_torihikisaki_cd.Text, tb_juchu_cd1.Text, tb_juchu_cd2.Text);
                tb_seihin_name.Text = tss.get_seihin_name(tb_seihin_cd.Text);
                tb_seisankisyu.Text = tss.get_seisankisyu(tb_seihin_cd.Text, tb_koutei_cd.Text);
                disp_schedule();
                clear_seisan_jisseki();
                tb_busyo_cd.Focus();
            }
        }
Example #3
0
        private void dgv_add(string in_str)
        {
            int w_daburi_flg = 0;

            string out_01 = tss.StringMidByte(in_str, 0, 3);     //識別
            string out_02 = tss.StringMidByte(in_str, 3, 2);     //発注分類区分
            string out_03 = tss.StringMidByte(in_str, 5, 10);    //発注番号
            string out_04 = tss.StringMidByte(in_str, 15, 12);   //伝票番号
            string out_05 = tss.StringMidByte(in_str, 27, 4);    //発注指示区分
            string out_06 = tss.StringMidByte(in_str, 31, 7);    //ロット番号
            string out_07 = tss.StringMidByte(in_str, 38, 5);    //仕入先NO
            string out_08 = tss.StringMidByte(in_str, 43, 12);   //仕入先ファックスNO
            string out_09 = tss.StringMidByte(in_str, 55, 10);   //空白(旧部品番号)
            string out_10 = tss.StringMidByte(in_str, 65, 8);    //発注総数
            string out_11 = tss.StringMidByte(in_str, 73, 8);    //指示日
            string out_12 = tss.StringMidByte(in_str, 81, 8);    //指示数
            string out_13 = tss.StringMidByte(in_str, 89, 2);    //単価区分
            string out_14 = tss.StringMidByte(in_str, 91, 1);    //入荷区分
            string out_15 = tss.StringMidByte(in_str, 92, 15);   //部品番号(新)
            string out_16 = tss.StringMidByte(in_str, 107, 100); //部品名
            string out_17 = tss.StringMidByte(in_str, 207, 47);  //空白
            string out_18 = tss.StringMidByte(in_str, 254, 2);   //CR+LF
            string out_19 = in_str;                              //バーコード(生)

            //頭の3文字が「PD2」でない
            if (out_01 != "PD2")
            {
                Console.Beep(1500, 500);
                lbl_message.Text      = "不明なデータです。( != PD2 )";
                lbl_message.ForeColor = Color.Red;
            }
            else
            {
                if (out_02 != "10" && out_02 != "20" && out_02 != "21" && out_02 != "40" && out_02 != "50" && out_02 != "60" && out_02 != "30")
                {
                    Console.Beep(1500, 500);
                    lbl_message.Text      = "発注分類区分が適用外の伝票です。(" + out_02 + " )";
                    lbl_message.ForeColor = Color.Red;
                }
                else
                {
                    if (out_14 != "0" && out_14 != "1")
                    {
                        Console.Beep(1500, 500);
                        lbl_message.Text      = "入荷区分が適用外の伝票です。(" + out_14 + " )";
                        lbl_message.ForeColor = Color.Red;
                    }
                    else
                    {
                        //部品マスタのチェック
                        if (tss.OracleSelect("select * from tss_buhin_m where buhin_cd = '" + out_15.TrimEnd() + "'").Rows.Count == 0)
                        {
                            Console.Beep(1500, 500);
                            lbl_message.Text      = "部品マスタに存在しない部品コードです。(" + out_15 + ")";
                            lbl_message.ForeColor = Color.Red;
                        }
                        else
                        {
                            //入出庫履歴からの伝票番号重複読み込みチェック
                            if (tss.OracleSelect("select * from tss_buhin_nyusyukko_m where denpyou_no = '" + out_04.TrimEnd() + "'").Rows.Count > 0)
                            {
                                Console.Beep(1500, 500);
                                lbl_message.Text      = "既に処理済みの伝票です。(" + tss.StringMidByte(out_04, 0, 7) + "-" + tss.StringMidByte(out_04, 7, 3) + "-" + tss.StringMidByte(out_04, 10, 2) + ")";
                                lbl_message.ForeColor = Color.Red;
                            }
                            else
                            {
                                //入出庫履歴からの発注番号重複チェック(伝票差替え等の可能性あり)確認のみで処理は続行する
                                if (tss.OracleSelect("select * from tss_buhin_nyusyukko_m where substr(barcode,5,10) = '" + out_03 + "'").Rows.Count > 0)
                                {
                                    Console.Beep(1500, 500);
                                    lbl_message.Text      = "同一の「発注番号」の伝票が登録済みです。差替など確認してください。(" + out_03 + ")";
                                    lbl_message.ForeColor = Color.Orange;
                                }
                                //画面内の重複読み込みチェック
                                for (int i = 0; i < dgv_m.Rows.Count; i++)
                                {
                                    if (dgv_m.Rows[i].Cells[3].Value.ToString() == out_04)
                                    {
                                        w_daburi_flg = 1;
                                        break;
                                    }
                                    if (tss.StringMidByte(dgv_m.Rows[i].Cells[18].Value.ToString(), 5, 10) == out_03)
                                    {
                                        w_daburi_flg = 2;
                                        break;
                                    }
                                }
                                if (w_daburi_flg == 1)
                                {
                                    Console.Beep(1500, 500);
                                    lbl_message.Text      = "既に読み込み済の伝票番号です。(" + tss.StringMidByte(out_04, 0, 7) + "-" + tss.StringMidByte(out_04, 7, 3) + "-" + tss.StringMidByte(out_04, 10, 2) + ")";
                                    lbl_message.ForeColor = Color.Red;
                                }
                                else
                                {
                                    if (w_daburi_flg == 2)
                                    {
                                        Console.Beep(1000, 500);
                                        lbl_message.Text      = "同一の「発注番号」の伝票が読み込まれています。差替など確認してください。(" + out_03 + ")";
                                        lbl_message.ForeColor = Color.Orange;
                                    }
                                    //dgvの初期化
                                    if (dgv_m.Rows.Count == 0)
                                    {
                                        dgv_init(); //dgvの初期設定
                                    }
                                    //dgvに表示
                                    dgv_m.Rows.Add(out_01, out_02, out_03, out_04, out_05, out_06, out_07, out_08, out_09, out_10, out_11, out_12, out_13, out_14, out_15, out_16, out_17, out_18, out_19);
                                    lbl_message.Text      = "伝票番号 " + tss.StringMidByte(out_04, 0, 7) + "-" + tss.StringMidByte(out_04, 7, 3) + "-" + tss.StringMidByte(out_04, 10, 2) + " OK!";
                                    lbl_message.ForeColor = Color.Black;
                                    dgv_m.FirstDisplayedScrollingRowIndex = dgv_m.Rows.Count - 1;
                                    //追加した行の指示日をカレントセルにする
                                    dgv_m.Focus();
                                    dgv_m.CurrentCell = dgv_m[10, dgv_m.Rows.Count - 1];
                                }
                            }
                        }
                    }
                }
            }
        }
Example #4
0
        private void make_insatu_data()
        {
            DataTable w_dt       = new DataTable(); //生産スケジュール用
            DataTable w_dt_bikou = new DataTable(); //備考用
            DataRow   w_dr;                         //書込み用

            //画面の条件からsqlを作成しデータを抽出
            string[] sql_where = new string[7];
            int      sql_cnt   = 0;

            //部署
            if (tb_busyo_cd.Text != "" && tb_busyo_cd.Text != "")
            {
                sql_where[sql_cnt] = "busyo_cd = '" + tb_busyo_cd.Text.ToString() + "'";
                sql_cnt++;
            }
            //工程
            if (tb_koutei_cd.Text != "" && tb_koutei_cd.Text != "")
            {
                sql_where[sql_cnt] = "koutei_cd = '" + tb_koutei_cd.Text.ToString() + "'";
                sql_cnt++;
            }
            //ライン
            if (tb_line_cd.Text != "" && tb_line_cd.Text != "")
            {
                sql_where[sql_cnt] = "line_cd = '" + tb_line_cd.Text.ToString() + "'";
                sql_cnt++;
            }
            string sql = "select * from tss_seisan_schedule_f where seisan_yotei_date = '" + tb_seisan_yotei_date.Text + "' ";

            for (int i = 1; i <= sql_cnt; i++)
            {
                if (i >= 1)
                {
                    sql = sql + " and ";
                }
                sql = sql + sql_where[i - 1];
            }

            w_dt = tss.OracleSelect(sql);

            //画面条件分のデータの指示書印刷データを作成する
            DateTime w_datetime;

            foreach (DataRow loop_dr in w_dt.Rows)
            {
                w_dr = w_dt_meisai.NewRow();
                //作業日
                w_dr["seisan_yotei_date"] = loop_dr["seisan_yotei_date"].ToString();
                //順番(ページ数)
                w_dr["seq1"] = loop_dr["seq"].ToString();
                //順番(総ページ数)
                w_dr["seq2"] = get_page_count(loop_dr["seisan_yotei_date"].ToString(), loop_dr["busyo_cd"].ToString(), loop_dr["koutei_cd"].ToString(), loop_dr["line_cd"].ToString());
                //部署コード
                w_dr["busyo_cd"] = loop_dr["busyo_cd"].ToString();
                //部署名
                w_dr["busyo_name"] = tss.get_busyo_name(loop_dr["busyo_cd"].ToString());
                //工程コード
                w_dr["koutei_cd"] = loop_dr["koutei_cd"].ToString();
                //工程名
                w_dr["koutei_name"] = tss.get_koutei_name(loop_dr["koutei_cd"].ToString());
                //ラインコード
                w_dr["line_cd"] = loop_dr["line_cd"].ToString();
                //ライン名
                w_dr["line_name"] = tss.get_line_name(loop_dr["line_cd"].ToString());
                //生産工程のseq_no
                w_dr["seq_no1"] = get_seq_no1(loop_dr["seihin_cd"].ToString(), loop_dr["busyo_cd"].ToString(), loop_dr["koutei_cd"].ToString());
                //生産工程のseq_noのmax
                w_dr["seq_no2"] = get_seq_no2(loop_dr["seihin_cd"].ToString());
                //取引先コード
                w_dr["torihikisaki_cd"] = loop_dr["torihikisaki_cd"].ToString();
                //受注コード1
                w_dr["juchu_cd1"] = loop_dr["juchu_cd1"].ToString();
                //受注コード2
                w_dr["juchu_cd2"] = loop_dr["juchu_cd2"].ToString();
                //受注数
                w_dr["juchu_su"] = loop_dr["juchu_su"].ToString();
                //取引先名
                w_dr["torihikisaki_name"] = tss.get_torihikisaki_name(loop_dr["torihikisaki_cd"].ToString());
                //製品コード
                w_dr["seihin_cd"] = loop_dr["seihin_cd"].ToString();
                //製品名
                w_dr["seihin_name"] = loop_dr["seihin_name"].ToString();
                //生産機種
                w_dr["seisankisyu"] = loop_dr["seisankisyu"].ToString();
                //メンバー
                //現時点メンバーは未対応として、空白で印字
                w_dr["member01"] = "";
                w_dr["member02"] = "";
                w_dr["member03"] = "";
                w_dr["member04"] = "";
                w_dr["member05"] = "";
                w_dr["member06"] = "";
                w_dr["member07"] = "";
                w_dr["member08"] = "";
                w_dr["member09"] = "";
                w_dr["member10"] = "";
                w_dr["member11"] = "";
                w_dr["member12"] = "";
                //備考
                w_dr["bikou"] = loop_dr["bikou"].ToString();
                //備考に受注マスタのbikouとbikou2を追加する
                w_dt_bikou = tss.OracleSelect("select * from tss_juchu_m where torihikisaki_cd = '" + loop_dr["torihikisaki_cd"].ToString() + "' and juchu_cd1 = '" + loop_dr["juchu_cd1"].ToString() + "' and juchu_cd2 = '" + loop_dr["juchu_cd2"].ToString() + "'");
                if (w_dt_bikou.Rows.Count <= 0)
                {
                    //受注が存在しない場合
                }
                else
                {
                    w_dr["bikou"] = w_dr["bikou"] + " " + w_dt_bikou.Rows[0]["bikou2"].ToString();
                }
                //タクトタイム
                w_dr["tact_time"] = loop_dr["tact_time"].ToString();
                //段取工数
                w_dr["dandori_kousu"] = loop_dr["dandori_kousu"].ToString();
                //追加工数
                w_dr["tuika_kousu"] = loop_dr["tuika_kousu"].ToString();
                //補充工数
                w_dr["hoju_kousu"] = loop_dr["hoju_kousu"].ToString();
                //生産済み数
                w_dr["seisan_sumi_su"] = get_seisan_sumi_su(loop_dr["torihikisaki_cd"].ToString(), loop_dr["juchu_cd1"].ToString(), loop_dr["juchu_cd2"].ToString(), loop_dr["koutei_cd"].ToString());
                //生産数(指示数)
                w_dr["seisan_su"] = loop_dr["seisan_su"].ToString();
                //生産時間
                w_dr["seisan_time"] = loop_dr["seisan_time"].ToString();
                //開始時刻
                if (DateTime.TryParse(loop_dr["start_time"].ToString(), out w_datetime))
                {
                    //正常な値
                    w_dr["start_time"] = w_datetime.ToShortTimeString();
                }
                else
                {
                    //日時として認識できない場合は空白にする
                    w_dr["start_time"] = "";
                }
                //終了時刻
                if (DateTime.TryParse(loop_dr["end_time"].ToString(), out w_datetime))
                {
                    //正常な値
                    w_dr["end_time"] = w_datetime.ToShortTimeString();
                }
                else
                {
                    //日時として認識できない場合は空白にする
                    w_dr["end_time"] = "";
                }
                //前回の不適合
                //現時点で未対応の為、空白にする
                w_dr["hinsitu_zenkai_name1"] = "";
                w_dr["hinsitu_zenkai_su1"]   = "";
                w_dr["hinsitu_zenkai_name2"] = "";
                w_dr["hinsitu_zenkai_su2"]   = "";
                w_dr["hinsitu_zenkai_name3"] = "";
                w_dr["hinsitu_zenkai_su3"]   = "";
                w_dr["hinsitu_zenkai_name4"] = "";
                w_dr["hinsitu_zenkai_su4"]   = "";
                w_dr["hinsitu_zenkai_name5"] = "";
                w_dr["hinsitu_zenkai_su5"]   = "";
                w_dr["hinsitu_zenkai_name6"] = "";
                w_dr["hinsitu_zenkai_su6"]   = "";
                //過去の不適合
                //現時点で未対応の為、空白にする
                w_dr["hinsitu_kako_name1"] = "";
                w_dr["hinsitu_kako_su1"]   = "";
                w_dr["hinsitu_kako_name2"] = "";
                w_dr["hinsitu_kako_su2"]   = "";
                w_dr["hinsitu_kako_name3"] = "";
                w_dr["hinsitu_kako_su3"]   = "";
                w_dr["hinsitu_kako_name4"] = "";
                w_dr["hinsitu_kako_su4"]   = "";
                w_dr["hinsitu_kako_name5"] = "";
                w_dr["hinsitu_kako_su5"]   = "";
                w_dr["hinsitu_kako_name6"] = "";
                w_dr["hinsitu_kako_su6"]   = "";
                //バーコード(指示書のバーコード識別文字はSJ1とし、各項目をdbと同じ桁数の文字列にして連結させる)(BC読込後に加工無しでdbへアクセスできるように考慮)
                w_dr["barcode"] = "SJ1"
                                  + tss.StringMidByte(loop_dr["seisan_yotei_date"].ToString() + "          ", 0, 10)
                                  + tss.StringMidByte(loop_dr["busyo_cd"].ToString() + "    ", 0, 4)
                                  + tss.StringMidByte(loop_dr["koutei_cd"].ToString() + "   ", 0, 3)
                                  + tss.StringMidByte(loop_dr["line_cd"].ToString() + "   ", 0, 3)
                                  + tss.StringMidByte(loop_dr["seq"].ToString() + "   ", 0, 3)
                                  + tss.StringMidByte(loop_dr["torihikisaki_cd"].ToString() + "      ", 0, 6)
                                  + tss.StringMidByte(loop_dr["juchu_cd1"].ToString() + "                ", 0, 16)
                                  + tss.StringMidByte(loop_dr["juchu_cd2"].ToString() + "                ", 0, 16)
                ;
                w_dt_meisai.Rows.Add(w_dr);
            }
        }
Example #5
0
        private void list_meisai()
        {
            //画面の条件に合わせてリストを作成する
            string    w_sql;                  //実行するsql
            DataTable w_dt = new DataTable(); //指定年月のスケジュールレコード

            w_sql = sql_make("select * from tss_seisan_schedule_f where substrb(seisan_yotei_date,1,7) = '" + nud_year.Value.ToString() + "/" + nud_month.Value.ToString("00") + "'") + " order by torihikisaki_cd,juchu_cd1,juchu_cd2 asc";

            //指定年月の生産スケジュールレコードの読み込み
            w_dt = tss.OracleSelect(w_sql);
            //表示用リストの作成

            int w_int_gyou;             //作成した行のカウント

            w_int_gyou = 0;
            string w_torihikisaki_cd;   //退避用
            string w_juchu_cd1;         //退避用
            string w_juchu_cd2;         //退避用

            w_torihikisaki_cd = "";
            w_juchu_cd1       = "";
            w_juchu_cd2       = "";
            string    w_day;      //日算出用
            decimal   w_dec1;     //計算用
            decimal   w_dec2;     //計算用
            DataRow   w_dr_list;  //行追加用
            DataTable w_dt_busyo; //リンク用
            DataTable w_dt_line;  //リンク用

            w_dt_busyo = null;
            w_dt_line  = null;
            foreach (DataRow dr in w_dt.Rows)
            {
                w_dt_busyo = tss.OracleSelect("select * from tss_busyo_m where busyo_cd = '" + dr["busyo_cd"].ToString() + "'");
                w_dt_line  = tss.OracleSelect("select * from tss_line_m where line_cd = '" + dr["line_cd"].ToString() + "'");
                //日を算出してその日に工数を足す
                w_day = tss.StringMidByte(dr["seisan_yotei_date"].ToString(), 8, 2);
                //同一受注かチェック(同一受注の場合、同一行にまとめる)
                if (w_torihikisaki_cd == dr["torihikisaki_cd"].ToString() && w_juchu_cd1 == dr["juchu_cd1"].ToString() && w_juchu_cd2 == dr["juchu_cd2"].ToString())
                {
                    //同一受注の場合
                    if (decimal.TryParse(w_dt_list.Rows[w_int_gyou - 1][w_day].ToString(), out w_dec1))
                    {
                    }
                    else
                    {
                        w_dec1 = 0;
                    }

                    if (decimal.TryParse(dr["seisan_time"].ToString(), out w_dec2))
                    {
                        w_dt_list.Rows[w_int_gyou - 1][w_day] = w_dec1 + w_dec2;
                    }
                }
                else
                {
                    //同一受注でない場合
                    //w_dt_listにレコードを作成
                    w_dr_list = w_dt_list.NewRow();
                    w_dr_list["torihikisaki_cd"] = dr["torihikisaki_cd"].ToString();
                    w_dr_list["juchu_cd1"]       = dr["juchu_cd1"].ToString();
                    w_dr_list["juchu_cd2"]       = dr["juchu_cd2"].ToString();
                    w_dr_list["seihin_cd"]       = dr["seihin_cd"].ToString();
                    w_dr_list["seihin_name"]     = dr["seihin_name"].ToString();
                    w_dr_list["juchu_su"]        = dr["juchu_su"].ToString();
                    w_dr_list[w_day]             = dr["seisan_time"].ToString();
                    w_dt_list.Rows.Add(w_dr_list);
                    //行数カウント1up
                    w_int_gyou = w_int_gyou + 1;
                    //受注コードの退避
                    w_torihikisaki_cd = dr["torihikisaki_cd"].ToString();
                    w_juchu_cd1       = dr["juchu_cd1"].ToString();
                    w_juchu_cd2       = dr["juchu_cd2"].ToString();
                }
            }
        }