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(); } }
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]; } } } } } } }
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); } }
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(); } } }