예제 #1
0
        // frmPallet インボイス番号を登録
        private void btnOK_Click(object sender, EventArgs e)
        {
            string invoice = txtInvoiceNo.Text;

            if (invoice == string.Empty)
            {
                DialogResult result = MessageBox.Show("Selected cells' invoice no is to be updated." + Environment.NewLine +
                                                      "Is it OK?", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                if (result == DialogResult.No)
                {
                    return;
                }
            }

            TfSQL tf  = new TfSQL();
            bool  res = tf.sqlMultipleUpdateInvoiceOnPallet(cartonlist, invoice);

            if (res)
            {
                //本フォームのデータグリットビュー更新
                MessageBox.Show("The following carton IDs' invoice number were updated: " + Environment.NewLine + message, "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //親フォームfrmTrayのデータグリットビューを更新するため、デレゲートイベントを発生させる
                this.RefreshEvent(this, new EventArgs());
            }
            else
            {
                MessageBox.Show("Invoice number registration was not successful.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            Close();
        }
예제 #2
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            TfSQL tf = new TfSQL();

            // string mess = string.Empty;
            if (string.IsNullOrEmpty(txtNewPass.Text) || string.IsNullOrEmpty(txtConfirmPass.Text))
            {
                MessageBox.Show("Please fill password and confirm password!!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (txtConfirmPass.Text != txtNewPass.Text)
                {
                    MessageBox.Show("Confirm password does not match!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtConfirmPass.Clear();
                    txtNewPass.Clear();
                }
                else
                {
                    tf.sqlExecuteScalarString("update iqc_user set user_pass = '******' where user_name = '" + lbCode.Text + "' and  full_name = '" + lbUsername.Text + "'");
                    DialogResult result = MessageBox.Show("Your password has been changed!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {
                        this.Close();
                    }
                }
            }
        }
예제 #3
0
파일: TfSato.cs 프로젝트: furutak/TrayGuard
        // 印刷ボタン押下時処理
        public void printStart(string labelType1, string id, DataTable dtLot, string batch, DateTime pdate,
                               string labelType2, string labelType3, short copies, string bin)
        {
            ltype2           = labelType2;
            ltype3           = labelType3;
            trayPackCartonId = id;
            dtLotSumary      = dtLot;
            qty            = dtLotSumary.Rows.Count >= 0 ? dtLotSumary.Rows[0]["total"].ToString() : string.Empty;
            trayIdQtyCombo = id + " " + qty.ToString();

            // ロットサマリーテーブルの格納、および、DB上ラベルコンテンツ情報の取得
            if (labelType1 != "tray")
            {
                rev      = batch;
                packdate = pdate.ToString("yyyy/M/d");

                dtLblContent = new DataTable();
                string sql = "select model, header, content from t_label_content";
                TfSQL  tf  = new TfSQL();
                tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dtLblContent);

                vendor   = pickUpFromDataTable(dtLblContent, "VENDOR");
                config   = pickUpFromDataTable(dtLblContent, "CONFIG");
                desc     = pickUpFromDataTable(dtLblContent, "DESC");
                footnote = pickUpFromDataTable(dtLblContent, "FOOTNOTE");
                model    = pickUpFromDataTable(dtLblContent, "MODEL");

                string pnFox  = pickUpFromDataTable(dtLblContent, "P/N_FOX");
                string pnPega = pickUpFromDataTable(dtLblContent, "P/N_PEGA");
                apn = pnFox;
                pn  = (ltype3 == "Fox") ? apn : (ltype3 == "Pega") ? pnPega : (ltype3 == "Non") ? "Non" : "Error!";
            }

            // PrintDocumentコンポーネントオブジェクトを生成
            System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
            pd.PrinterSettings.PrinterName = printerName; // 出力先プリンタ名を指定
            pd.PrinterSettings.Copies      = copies;      // 印字枚数を指定

            // PrintPageイベントハンドラに追加
            if (labelType1 == "tray")
            {
                pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printTray);
            }
            else if (labelType1 == "packCartonInternal")
            {
                // 2016.07.28 PEC FUJIKI (印刷部分の仕様変更対応で追加) FROM
                page_counter = 0;
                data_counter = 0;
                // 2016.07.28 PEC FUJIKI (印刷部分の仕様変更対応で追加) TO
                pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printPackCartonPalletInternal);
            }
            else if (labelType1 == "packCartonPega")
            {
                pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printPackCartonPalletPega);
            }

            pd.Print();   // 印刷の選択ダイアログを表示
        }
예제 #4
0
        // 登録済みのシリアルおよびその付帯情報を、UPDATE文で置き換える
        private void btnReplace_Click(object sender, EventArgs e)
        {
            if (dtModule.Rows.Count <= 0)
            {
                return;                           //if (testerNg || dtModule.Rows.Count <= 0)
            }
            if (!txtRow.Text.Equals("1"))
            {
                MessageBox.Show("Please check module-id status.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                return;
            }

            string mdlBefore = txtBefore.Text;
            string mdlAfter  = dtModule.Rows[0]["module_id"].ToString();

            // 重複確認処理を行う
            TfSQL  tf          = new TfSQL();
            string dbDuplicate = tf.sqlModuleDuplicateCheck(dtModule);

            if (dbDuplicate != string.Empty)
            {
                for (int i = 0; i < dgvModule.Rows.Count; ++i)
                {
                    if (dgvModule["module_id", i].Value.ToString() == dbDuplicate)
                    {
                        dgvModule["module_id", i].Style.BackColor = Color.Red;
                    }
                }
                // soundAlarm();
                btnReplace.Enabled = false;
                return;
            }

            // 更新処理
            string sql = "update t_module set " +
                         "module_id ='" + (string)dtModule.Rows[0]["module_id"].ToString() + "', " +
                         "lot ='" + dtModule.Rows[0]["lot"].ToString() + "', " +
                         "tester_id ='" + dtModule.Rows[0]["tester_id"].ToString() + "', " +
                         "test_result ='" + dtModule.Rows[0]["test_result"].ToString() + "', " +
                         "test_date ='" + dtModule.Rows[0]["test_date"].ToString() + "', " +
                         "r_mode ='" + dtModule.Rows[0]["r_mode"].ToString() + "' " +
                         "where module_id = '" + mdlBefore + "' and tray_id ='" + trayId + "'";

            System.Diagnostics.Debug.Print(sql);
            bool res = tf.sqlExecuteNonQuery(sql, false);

            if (res)
            {
                //親フォームfrmTrayのデータグリットビューを更新するため、デレゲートイベントを発生させる
                this.RefreshEvent(this, new EventArgs());
                btnReplace.Enabled = false;
                txtAfter.Enabled   = false;
                txtRow.Text        = string.Empty;
                this.Focus();
                MessageBox.Show("The replacement was successful.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
            }
        }
예제 #5
0
        // ユーザーIDコンボボックス選択時、ユーザー名を表示し、パスワードテキストボックス・ログインボタンを有効にする
        private void cmbUserId_SelectedIndexChanged(object sender, EventArgs e)
        {
            TfSQL  tf  = new TfSQL();
            string sql = "select user_name from t_user where user_id = '" + cmbUserId.Text + "'";

            txtUserName.Text = tf.sqlExecuteScalarString(sql);

            txtPassword.Enabled = true;
        }
예제 #6
0
        // サブプロシージャ:DBからデータテーブルへの読み込み
        private void readTrayInfo(ref DataTable dt)
        {
            dt.Rows.Clear();
            string sql = "select tray_id, lot, qty, register_date, rg_dept, multi_lot, " +
                         "'OK' as check from t_tray where pack_id='" + txtPackId.Text + "'";
            TfSQL tf = new TfSQL();

            System.Diagnostics.Debug.Print(sql);
            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dt);
        }
예제 #7
0
        // サブプロシージャ:DBからデータテーブルへの読み込み
        private void readModuleInfo(ref DataTable dt)
        {
            dt.Rows.Clear();
            string sql = "select module_id, lot, bin, tester_id, test_result, test_date, r_mode " +
                         "from t_module where tray_id='" + txtTrayId.Text + "'";
            TfSQL tf = new TfSQL();

            System.Diagnostics.Debug.Print(sql);
            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dt);
        }
예제 #8
0
        // サブプロシージャ:DBからデータテーブルへの読み込み
        private void readCartonInfo(ref DataTable dt)
        {
            dt.Rows.Clear();
            string sql = "select carton_id, lot, m_qty, batch, register_date, rg_user, " +
                         "case when l_cnt >= 2 then 'T' else 'F' end as multi_lot, " +
                         "'OK' as check from t_carton where pallet_id='" + txtPallet.Text + "'";
            TfSQL tf = new TfSQL();

            System.Diagnostics.Debug.Print(sql);
            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dt);
        }
예제 #9
0
        // サブプロシージャ:ロット集計グリッドビューを更新し、数量の最も多いロット番号を返す
        public string updateLotSummary(DataTable dt)
        {
            if (dt.Rows.Count <= 0)
            {
                dtLot = new DataTable();
                dgvLotSummary.DataSource = dtLot;
                return(string.Empty);
            }

            // 一時テーブルに、ロット集計を格納する
            string sql1   = "select lot, count(lot) as qty from t_module where tray_id in (";
            string sql2   = string.Empty;
            var    query1 = dt.AsEnumerable()
                            .Select(row => new { tray_id = row.Field <string>("tray_id") });

            foreach (var q in query1)
            {
                sql2 += "'" + q.tray_id + "', ";
            }
            string sql3 = sql1 + VBS.Left(sql2, sql2.Length - 2) + ") group by lot order by qty desc, lot";

            System.Diagnostics.Debug.Print(sql3);
            DataTable dtTemp = new DataTable();
            TfSQL     tf     = new TfSQL();

            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql3, ref dtTemp);

            // ロット集計表示テーブルに、一時テーブルの情報を移す
            dgvLotSummary.DataSource = null;
            dgvLotSummary.Refresh();
            dtLot = new DataTable();
            var query2 = dtTemp.AsEnumerable().Select(r => new { lot = r.Field <string>("lot"), qty = r.Field <Int64>("qty") });

            // 列の追加
            foreach (var q in query2)
            {
                dtLot.Columns.Add(q.lot, typeof(int));
            }
            dtLot.Columns.Add("total", typeof(int));
            // 行の追加
            dtLot.Rows.Add();
            foreach (var q in query2)
            {
                dtLot.Rows[0][q.lot] = q.qty;
            }
            dtLot.Rows[0]["total"] = query2.Sum(a => a.qty);

            dgvLotSummary.DataSource = dtLot;
            return(query2.First().lot);
        }
예제 #10
0
        public void getComboListFromDB(ref ComboBox cmb)
        {
            string sql_model = "select model from tbl_model_dbplace order by model";

            System.Diagnostics.Debug.Print(sql_model);
            TfSQL tf = new TfSQL();

            tf.getComboBoxData(sql_model, ref cmb);

            if (cmbModel.Items.Count > 0)
            {
                cmbModel.SelectedIndex = 0;
            }
        }
예제 #11
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     if ((txtUserName.Text != "") && txtPassword.Text != "")
     {
         TfSQL  con    = new TfSQL();
         string sqladd = "insert into iqc_user (user_name, user_pass, full_name) values ( '" + txtUserName.Text + "','" + txtPassword.Text + "', '" + txtFullName.Text + "')";
         con.sqlExecuteScalarString(sqladd);
         MessageBox.Show("You have add account successfully ", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
         Close();
     }
     else
     {
         MessageBox.Show("Please fill user code and password ", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
예제 #12
0
 // LOT集計グリッドビュー左のボタンを押下時、対象のモジュールをエクセルファイルへ出力する
 private void btnExportModule_Click(object sender, EventArgs e)
 {
     // 2016.08.29 FUJII 別スレッドで処理(処理スピード対策)
     var task = Task.Factory.StartNew(() =>
     {
         DataTable dt = new DataTable();
         string sql   = "select *, '" + txtPackId.Text + "' as pack_id from t_module where tray_id in (" +
                        "select tray_id from t_tray where pack_id = '" + txtPackId.Text + "')";
         TfSQL tf = new TfSQL();
         System.Diagnostics.Debug.Print(sql);
         tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dt);
         ExcelClass xl = new ExcelClass();
         // 2016.08.29 FUJII エクセルへの出力から、デスクトップCSVへの出力へ変更
         xl.ExportToCsv(dt, System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\pack.csv");
     });
 }
예제 #13
0
        // 部署コンボボックス選択時、ユーザーIDコンボボックスにDBリストを追加し、メニューコンボボックスにもリストを追加
        private void cmbDept_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmbUserId.Text   = string.Empty;
            txtUserName.Text = string.Empty;

            // 2016.08.03 FUJIKI MFG にも PACK を許可させる
            // 2017.07.21 MFGはTrayしかできないにさせる(呉)
            string[] aryTray = new string[] { "MFG", "QA", "PC" };
            string[] aryPack = new string[] { "MFG", "PC" };
            string[] aryCart = new string[] { "PC" };
            string[] aryPalt = new string[] { "PC" };
            cmbMenu.Items.Clear();
            if (0 <= Array.IndexOf(aryTray, cmbDept.Text))
            {
                cmbMenu.Items.Add("1. Tray");
            }
            if (0 <= Array.IndexOf(aryPack, cmbDept.Text))
            {
                cmbMenu.Items.Add("2. Pack");
            }
            if (0 <= Array.IndexOf(aryCart, cmbDept.Text))
            {
                cmbMenu.Items.Add("3. Carton");
            }
            if (0 <= Array.IndexOf(aryPalt, cmbDept.Text))
            {
                cmbMenu.Items.Add("4. Pallet");
            }
            cmbMenu.Enabled       = true;
            cmbMenu.SelectedIndex = 0;
            // 2016.08.03 FUJIKI MFG にも PACK を許可させる

            TfSQL  tf  = new TfSQL();
            string sql = "select distinct user_id from t_user where dept ='" + cmbDept.Text + "' order by user_id";

            System.Diagnostics.Debug.Print(sql);
            tf.getComboBoxData(sql, ref cmbUserId);
            cmbUserId.Enabled = true;

            // 2016.08.03 FUJIKI MFG にも PACK を許可させる
            cmbMenu.SelectedIndex = (cmbMenu.Enabled ? cmbMenu.SelectedIndex : 1);
            cmbMenu.Enabled       = (cmbMenu.Items.Count > 1);
            // if (cmbDept.Text == "PC") cmbMenu.Enabled = true;
            // else { cmbMenu.Enabled = false; cmbMenu.SelectedIndex = 0; }
            // 2016.08.03 FUJIKI MFG にも PACK を許可させる
        }
예제 #14
0
        // 変更後モジュールがスキャンされたときの処理
        private void txtAfter_KeyDown(object sender, KeyEventArgs e)
        {
            // エンターキーの場合、テキストボックスの桁数が15桁の場合のみ、処理を行う
            if (e.KeyCode != Keys.Enter || txtAfter.Text.Length != 15)
            {
                return;
            }

            // 置換モード、または、追加モードの場合のみ、処理を行う
            if (mode == "replace" || mode == "add")
            {
                string carton = txtAfter.Text;
                string sql    = "select carton_id, lot, m_qty, batch, register_date, rg_user, " +
                                "case when l_cnt >= 2 then 'T' else 'F' end as multi_lot, " +
                                "case when cancel_date is not null then to_char(cancel_date,'YYYY/MM/DD') " +
                                "when pallet_id is not null then pallet_id else 'OK' end as check " +
                                "from t_carton where carton_id='" + carton + "'";
                System.Diagnostics.Debug.Print(sql);
                DataTable dt = new DataTable();
                TfSQL     tf = new TfSQL();
                tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dt);

                // テスターデータに該当がない場合でも、ユーザー認識用に表示するための処理
                dtCarton.Rows.Clear();
                DataRow dr = dtCarton.NewRow();
                dr["carton_id"] = carton;
                // テスターデータに該当がある場合の処理
                if (dt.Rows.Count != 0)
                {
                    dr["lot"]           = (string)dt.Rows[0]["lot"];
                    dr["m_qty"]         = (int)dt.Rows[0]["m_qty"];
                    dr["batch"]         = (string)dt.Rows[0]["batch"];
                    dr["register_date"] = (DateTime)dt.Rows[0]["register_date"];
                    dr["rg_user"]       = (string)dt.Rows[0]["rg_user"];
                    dr["multi_lot"]     = (string)dt.Rows[0]["multi_lot"];
                    dr["check"]         = (string)dt.Rows[0]["check"];
                }

                // メモリ上のテーブルにレコードを追加
                dtCarton.Rows.Add(dr);

                // データグリットビューの更新
                updateDataGridViews(dtCarton, ref dgvCarton);
            }
        }
예제 #15
0
        // サブプロシージャ:トレー情報の更新
        private bool updateTrayId(string trayId, string udept, string uname)
        {
            // モジュール数量、複数ロット区分、更新日、更新部署、更新ユーザーについて更新する
            int    qty      = (int)dtLot.Rows[0]["total"];
            string multiLot = dtLot.Columns.Count >= 3 ? "T" : "F";
            string sql      = "update t_tray set " +
                              "qty ='" + qty + "', " +
                              "update_date ='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "', " +
                              "up_dept ='" + udept + "', " +
                              "up_user ='******', " +
                              "multi_lot ='" + multiLot + "' " +
                              "where tray_id ='" + trayId + "'";

            System.Diagnostics.Debug.Print(sql);
            TfSQL tf  = new TfSQL();
            bool  res = tf.sqlExecuteNonQuery(sql, false);

            return(res);
        }
예제 #16
0
        // ディープキャンセル対象のカートンを、デスクトップのCSVをインポートして選択する
        private void btnImportForDeepCancel_Click(object sender, EventArgs e)
        {
            string sql1 = "select carton_id, lot, l_cnt, m_qty, batch, register_date, rg_user, cancel_date, cl_user, pallet_id from t_carton where carton_id in ( ";
            string sql2 = string.Empty;

            //クラスTfImportを使用し、SQL文を作成する
            List <TfImport> cartonList = TfImport.loadCartonListFromDesktopCsv(
                System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\CartonList.csv");

            foreach (var carton in cartonList)
            {
                sql2 += "'" + carton.CartonNumber + "', ";
            }

            string sql3 = sql1 + VBS.Left(sql2, sql2.Length - 2) + ") order by carton_id";

            System.Diagnostics.Debug.Print(sql3);

            // SQL結果を、DTAATABLEへ格納
            dtCarton.Clear();
            TfSQL tf = new TfSQL();

            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql3, ref dtCarton);

            // データグリットビューへDTAATABLEを格納
            dgvCarton.DataSource = dtCarton;

            //行ヘッダーに行番号を表示する
            for (int i = 0; i < dgvCarton.Rows.Count; i++)
            {
                dgvCarton.Rows[i].HeaderCell.Value = (i + 1).ToString();
            }

            //行ヘッダーの幅を自動調節する
            dgvCarton.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

            // 一番下の行を表示する
            if (dgvCarton.Rows.Count != 0)
            {
                dgvCarton.FirstDisplayedScrollingRowIndex = dgvCarton.Rows.Count - 1;
            }
        }
예제 #17
0
        // サブプロシージャ:モジュールの登録、充填モード
        private void registerModuleRefillMode()
        {
            string trayCurrent = txtTrayId.Text;

            //モジュールテーブルの補充前レコードを一旦削除し、トレーテーブルの更新履歴を追加する
            bool res1 = updateTrayIdAndDeleteModule(trayCurrent, txtLoginDept.Text, txtLoginName.Text);

            if (!res1)
            {
                MessageBox.Show("An error happened in the tray id updating process.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            //モジュールテーブルへ、データテーブルのレコードを一括登録する
            TfSQL tf   = new TfSQL();
            bool  res2 = tf.sqlMultipleInsertModule(dtModule, trayCurrent);

            if (res2)
            {
                //ラベルのプリントアウト
                TfSato tfs = new TfSato();
                tfs.printStart("tray", txtTrayId.Text, dtLot, string.Empty, dtpRegisterDate.Value, string.Empty, string.Empty, 1, string.Empty);

                //親フォームfrmTrayのデータグリットビューを更新するため、デレゲートイベントを発生させる
                this.RefreshEvent(this, new EventArgs());
                this.Focus();
                MessageBox.Show("Tray ID: " + trayCurrent + Environment.NewLine +
                                "and its modules were updated.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //ユーザーによるメッセージボックス確認後の処理
                formAddMode    = false;
                formRefillMode = false;
                updateDataGridViews(dtModule, ref dgvModule);

                //閉じるボタンみ有効として、閉じることを促す
                cmbBinShift.Enabled        = false;
                txtModuleId.Enabled        = false;
                btnRegisterTray.Enabled    = false;
                btnDeleteSelection.Enabled = false;
                btnChangeCapacity.Enabled  = false;
            }
        }
예제 #18
0
        // サブプロシージャ:トレー情報の更新(モジュール情報削除処理付き)
        private bool updateTrayIdAndDeleteModule(string trayId, string udept, string uname)
        {
            // モジュール数量、複数ロット区分、更新日、更新部署、更新ユーザーについて更新する
            int    qty      = (int)dtLot.Rows[0]["total"];
            string multiLot = dtLot.Columns.Count >= 3 ? "T" : "F";
            string sql      = "update t_tray set " +
                              "qty ='" + qty + "', " +
                              "update_date ='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "', " +
                              "up_dept ='" + udept + "', " +
                              "up_user ='******', " +
                              "multi_lot ='" + multiLot + "' " +
                              "where tray_id ='" + trayId + "'";

            // モジュールレコードは、下記サブプロシージャ内で一旦キャンセルし、別プロシージャで一括登録)
            System.Diagnostics.Debug.Print(sql);
            TfSQL tf  = new TfSQL();
            bool  res = tf.sqlUpdateModuleInPack(trayId, sql);

            return(res);
        }
예제 #19
0
        // サブプロシージャ:モジュールの登録、通常モード
        private void registerModuleNormalMode()
        {
            // 2016.08.10 FUJII  トレーIDの新規採番プロシージャ「GetNewTrayId」を、トランザクション処理バージョンへ変更
            //トレーIDの新規採番
            //string trayNew = getNewTrayId(txtLoginDept.Text, txtLoginName.Text, VBS.Mid(maxLot, 8, 1), cmbBinShift.Text);
            TfSQL  tf      = new TfSQL();
            string trayNew = tf.sqlGetNewTrayId(txtLoginDept.Text, txtLoginName.Text, VBS.Mid(maxLot, 8, 1), cmbBinShift.Text, maxLot, dtLot, ref registerDate);

            if (trayNew == string.Empty)
            {
                MessageBox.Show("An error happened in the tray id issuing process.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            //モジュールテーブルへ、データテーブルのレコードを一括登録する
            bool res = tf.sqlMultipleInsertModule(dtModule, trayNew);

            if (res)
            {
                //ラベルのプリントアウト
                TfSato tfs = new TfSato();
                tfs.printStart("tray", trayNew, dtLot, string.Empty, dtpRegisterDate.Value, string.Empty, string.Empty, 1, string.Empty);

                //登録済みの状態を表示
                txtTrayId.Text        = trayNew;
                dtpRegisterDate.Value = registerDate;

                //親フォームfrmTrayのデータグリットビューを更新するため、デレゲートイベントを発生させる
                this.RefreshEvent(this, new EventArgs());
                this.Focus();
                MessageBox.Show("Tray ID: " + trayNew + Environment.NewLine +
                                "and its modules were registered.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //ユーザーによるメッセージボックス確認後の処理
                txtTrayId.Text   = String.Empty;
                txtModuleId.Text = String.Empty;
                dtModule.Clear();
                capacity = 24;
                updateDataGridViews(dtModule, ref dgvModule);
            }
        }
예제 #20
0
        // スーパーユーザーに限り、登録済みトレーをキャンセルできる(パック後は不可)
        private void btnCancelTray_Click(object sender, EventArgs e)
        {
            // 本当に削除してよいか、2重で確認する。
            DialogResult result1 = MessageBox.Show("Do you really want to cancel this tray?",   "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);

            if (result1 == DialogResult.No)
            {
                return;
            }

            DialogResult result2 = MessageBox.Show("Are you really sure? Please select NO if you are not sure.", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);

            if (result2 == DialogResult.No)
            {
                return;
            }

            // キャンセルの実行
            string trayId = txtTrayId.Text;
            TfSQL  tf     = new TfSQL();
            bool   res    = tf.sqlCancelModuleInTray(trayId, txtLoginDept.Text, txtLoginName.Text);

            if (res)
            {
                //本フォームのデータグリットビュー更新
                dtModule.Clear();
                updateDataGridViews(dtModule, ref dgvModule);

                //親フォームfrmTrayのデータグリットビューを更新するため、デレゲートイベントを発生させる
                this.RefreshEvent(this, new EventArgs());
                this.Focus();
                MessageBox.Show("Tray ID " + trayId + " and its modules were canceled.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);

                // メッセージボックスの確認後、閉じる
                Close();
            }
            else
            {
                MessageBox.Show("Cancel process was not successful.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
예제 #21
0
        // サブプロシージャ:パレット情報の更新
        private bool updatePalletId(string PalletId, string uname)
        {
            // ロット数量、更新日、更新ユーザーについて更新する
            string lot   = dtLot.Columns[0].ColumnName;
            int    count = dtLot.Columns.Count - 1;
            int    m_qty = (int)dtLot.Rows[0]["total"];
            string sql   = "update t_pallet set " +
                           "lot ='" + lot + "', " +
                           "l_cnt = " + count + ", " +
                           "m_qty = " + m_qty + ", " +
                           "batch = '" + txtBatch.Text + "', " +
                           "register_date ='" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "', " +
                           "rg_user ='******' " +
                           "where pallet_id ='" + PalletId + "'";

            System.Diagnostics.Debug.Print(sql);
            TfSQL tf  = new TfSQL();
            bool  res = tf.sqlExecuteNonQuery(sql, false);

            return(res);
        }
예제 #22
0
        // コンボボックス項目選択時の処理(モデルNO)
        private void cmbModelNo_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sql;
            TfSQL  tf = new TfSQL();

            string model = cmbModelNo.Text;

            sql = "select model_name FROM t_model_sub_assy where model_no ='" + model + "'";
            System.Diagnostics.Debug.Print(sql);
            txtModelName.Text = tf.sqlExecuteScalarString(sql);

            // コンボボックスへ候補をセットする(サブ組NO)
            sql = "select sub_assy_no FROM t_model_sub_assy where model_no ='" + model + "'";
            System.Diagnostics.Debug.Print(sql);
            tf.getComboBoxData(sql, ref cmbSubAssy);
            cmbSubAssy.Enabled = true;

            // コンボボックスへ候補をセットする(ライン)
            sql = "select line FROM t_model_line where model_no ='" + model + "'";
            System.Diagnostics.Debug.Print(sql);
            tf.getComboBoxData(sql, ref cmbLine);
            cmbLine.Enabled = true;
        }
예제 #23
0
        // 登録ボタン押下時、各種確認、ボックスIDの発行、シリアルの登録、バーコードラベルのプリントを行う
        private void btnRegisterTray_Click(object sender, EventArgs e)
        {
            if (getOkCount(dtTray) != dtTray.Rows.Count)
            {
                MessageBox.Show("Tray is not 13.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            if (txtLoginDept.Text != "MFG")
            {
                //閲覧モードの場合は、プリントアウト
                if (!formAddMode)
                {
                    string pack = txtPackId.Text;
                    TfSato tfs  = new TfSato();

                    // ビンAか、ビンBか、ユーザーに選択させる
                    //DialogResult binResult = MessageBox.Show("Please click YES for Bin A, NO for Bin B.", "Print Option",
                    //    MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                    //string userBin = (binResult == DialogResult.Yes) ? "A" : "B";
                    string userBin = cmbBatch.Text;

                    // ペガトロン用か否か、ユーザーに選択させる
                    DialogResult result = MessageBox.Show("Do you print Pegatoron label also?", "Print Option", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                    if (result == DialogResult.Yes)
                    {
                        //tfs.printStart("packCartonInternal", pack, dtLot, cmbBatch.Text, dtpRegisterDate.Value, "Pack", "Fox", 1, userBin);
                        tfs.printStart("packCartonPega", pack, dtLot, cmbBatch.Text, dtpRegisterDate.Value, "Pack", "Pega", 1, userBin);
                    }
                    else
                    {
                        tfs.printStart("packCartonInternal", pack, dtLot, cmbBatch.Text, dtpRegisterDate.Value, "Pack", "Fox", 1, userBin);
                    }
                    return;
                }
            }

            //以下追加モードの場合の処理

            // 2016.08.22 FUJII  パックIDの新規採番プロシージャ「getNewPackId」を、トランザクション処理バージョンへ変更
            //if (cmbBatch.Text == string.Empty)
            //{
            //    MessageBox.Show("Please select Batch.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
            //    return;
            //}

            // 登録処理中は、閉じるボタンを除き、すべてのコントロールを無効にする
            cmbBatch.Enabled           = false;
            txtTrayId.Enabled          = false;
            btnRegisterPack.Enabled    = false;
            btnDeleteSelection.Enabled = false;

            //パックIDの新規採番
            string packNew = txtPackId.Text; // パック内容変更の処理も同ボタンで行うため、テキストボックスの既存IDを保持する

            if (formAddMode)
            {
                TfSQL tf0 = new TfSQL();
                packNew = tf0.sqlGetNewPackId(maxLot, cmbBatch.Text, txtLoginName.Text, dtLot, ref registerDate);
                if (packNew == string.Empty)
                {
                    MessageBox.Show("An error happened in the pack id issuing process.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                txtPackId.Text = packNew;
            }

            if (txtLoginDept.Text == "MFG")
            {
                // ビンAか、ビンBか、ユーザーに選択させる
                string pack = txtPackId.Text;
                TfSato tfs  = new TfSato();
                //DialogResult binResult = MessageBox.Show("Please click YES for Bin A, NO for Bin B.", "Print Option",
                //    MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                //string userBin = (binResult == DialogResult.Yes) ? "A" : "B";
                string userBin = cmbBatch.Text;
                tfs.printStart("packCartonInternal", pack, dtLot, cmbBatch.Text, dtpRegisterDate.Value, "Pack", "Non", 1, userBin);
                if (!formAddMode)
                {
                    return;
                }
            }

            //トレーテーブルのフィールドPACKID、その他を更新する
            TfSQL tf1 = new TfSQL();
            bool  res = tf1.sqlMultipleUpdateTrayInPack(dtTray, packNew);

            if (res)
            {
                //登録済みの状態を表示
                txtPackId.Text        = packNew;
                dtpRegisterDate.Value = registerDate;

                //親フォームfrmTrayのデータグリットビューを更新するため、デレゲートイベントを発生させる
                this.RefreshEvent(this, new EventArgs());
                this.Focus();
                MessageBox.Show("Pack ID: " + packNew + Environment.NewLine +
                                "and its trays were registered.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //ユーザーによるメッセージボックス確認後の処理
                txtPackId.Text = String.Empty;
                txtTrayId.Text = String.Empty;
                dtTray.Clear();
                capacity = 13;
                updateDataGridViews(dtTray, ref dgvTray, false);
            }
        }
예제 #24
0
        // 一時テーブルの選択された複数レコードを、一括消去させる
        private void btnDeleteSelection_Click(object sender, EventArgs e)
        {
            if (dtModule.Rows.Count <= 0)
            {
                return;
            }

            // セルの選択範囲が2列以上の場合は、メッセージの表示のみでプロシージャを抜ける
            if (dgvModule.Columns.GetColumnCount(DataGridViewElementStates.Selected) >= 2)
            {
                MessageBox.Show("Please select range with only one column.", "Notice",  MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                return;
            }

            // 部分キャンセルモードでない時は、通常処理(モジュールデータテーブルの選択行削除)
            if (!formPartialCancelMode)
            {
                DialogResult result = MessageBox.Show("Do you really want to delete the selected rows?", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (result == DialogResult.No)
                {
                    return;
                }

                foreach (DataGridViewCell cell in dgvModule.SelectedCells)
                {
                    dtModule.Rows[cell.RowIndex].Delete();
                }
                dtModule.AcceptChanges();
                updateDataGridViews(dtModule, ref dgvModule);
                txtModuleId.Focus();
                txtModuleId.SelectAll();
            }

            // 部分キャンセルモードの時は、DBモジュールテーブルの行削除
            else if (formPartialCancelMode)
            {
                if (dgvModule.SelectedCells.Count == dtModule.Rows.Count)
                {
                    MessageBox.Show("If you wish to delete all modules, please cancel the tray.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                    return;
                }

                DialogResult result = MessageBox.Show("Do you really want to delete the selected rows?", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (result == DialogResult.No)
                {
                    return;
                }

                btnDeleteSelection.Enabled = false;
                string sql1 = "delete from t_module where module_id in ('";
                string sql2 = string.Empty;
                foreach (DataGridViewCell cell in dgvModule.SelectedCells)
                {
                    sql2 += dtModule.Rows[cell.RowIndex]["module_id"].ToString() + "','";
                    dtModule.Rows[cell.RowIndex].Delete();
                }
                string sql3 = sql1 + VBS.Left(sql2, sql2.Length - 2) + ")";
                TfSQL  tf   = new TfSQL();
                bool   res  = tf.sqlExecuteNonQuery(sql3, false);

                if (res)
                {
                    dtModule.AcceptChanges();
                    updateDataGridViews(dtModule, ref dgvModule);

                    string updateTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
                    string sql4       = "update t_tray set update_date = '" + updateTime + "', up_dept = '" + txtLoginDept.Text + "', " +
                                        "up_user = '******', lot = '" + dtLot.Columns[0].ColumnName + "', " +
                                        "qty = '" + dtLot.Rows[0]["total"].ToString() + "', multi_lot = '" + (dtLot.Columns.Count >= 3 ? "T" : "F") + "' " +
                                        "where tray_id = '" + txtTrayId.Text + "'";
                    System.Diagnostics.Debug.Print(sql4);
                    tf.sqlExecuteNonQuery(sql4, false);

                    //親フォームfrmTrayのデータグリットビューを更新するため、デレゲートイベントを発生させる
                    this.RefreshEvent(this, new EventArgs());
                    this.Focus();
                    MessageBox.Show("Partial cancel was successful.", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                }
                else
                {
                    MessageBox.Show("Partial cancel failed.", "Result", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                }
            }
        }
예제 #25
0
        // 登録ボタン押下時、各種確認、ボックスIDの発行、シリアルの登録、バーコードラベルのプリントを行う
        private void btnRegisterTray_Click(object sender, EventArgs e)
        {
            if (cmbBinShift.Text == string.Empty)
            {
                MessageBox.Show("Please select Shift.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                return;
            }
            if (getOkCount(dtModule) != dtModule.Rows.Count)
            {
                MessageBox.Show("Module is not 24.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            // 登録処理中は、閉じるボタンを除き、すべてのコントロールを無効にする
            cmbBinShift.Enabled        = false;
            txtModuleId.Enabled        = false;
            btnRegisterTray.Enabled    = false;
            btnDeleteSelection.Enabled = false;
            btnChangeCapacity.Enabled  = false;

            if (formRefillMode && countBeforeRefill >= dtModule.Rows.Count)
            {
                MessageBox.Show("Refill is not correct.  Please close this window.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                return;
            }

            //一時テーブルのシリアル全てについて、DBテーブルに既に登録がないか、確認する
            //(REFILLモードの場合は、追加分のモジュールのみ確認する)
            DataTable dtTarget = new DataTable();

            if (formRefillMode)
            {
                dtTarget = subtractTable(dtModule, dtModuleBeforeRefill);
            }
            else
            {
                dtTarget = dtModule;
            }

            TfSQL  tf          = new TfSQL();
            string dbDuplicate = tf.sqlModuleDuplicateCheck(dtTarget);

            if (dbDuplicate != string.Empty)
            {
                for (int i = 0; i < dgvModule.Rows.Count; ++i)
                {
                    if (dgvModule["module_id", i].Value.ToString() == dbDuplicate)
                    {
                        dgvModule["module_id", i].Style.BackColor = Color.Red;
                    }
                }
                soundAlarm();

                // REFILLモードの場合は、閉じる以外の選択肢を与えない
                if (!formRefillMode)
                {
                    btnDeleteSelection.Enabled = true;
                }
                return;
            }

            // 充填モードか否かで、呼び出すプロシージャを選択して実行する
            if (!formRefillMode)
            {
                registerModuleNormalMode();
            }
            else
            {
                registerModuleRefillMode();
            }
        }
예제 #26
0
        // シリアルがスキャンされた時の処理
        private void txtModuleId_KeyDown(object sender, KeyEventArgs e)
        {
            // エンターキーの場合、テキストボックスの桁数が17桁または24桁の場合のみ、処理を行う
            if (e.KeyCode != Keys.Enter)
            {
                return;
            }
            if (txtModuleId.Text.Length != 17 && txtModuleId.Text.Length != 24)
            {
                return;
            }

            // BASEシリアルからHOOPシリアルを取得し(ステップ1)、両方のシリアルに該当する、テスト結果・プロセス名・テスト日時を取得する(ステップ2、ステップ3)
            TfSQL     tf               = new TfSQL();
            DataTable dt               = new DataTable();
            string    log              = string.Empty;
            string    module           = txtModuleId.Text;
            string    mdlShort         = VBS.Left(module, 17);
            string    mdlNtrs          = string.Empty;
            string    mdlOK2ShipResult = string.Empty;
            // 2016.08.18 FUJIKI FORCED NG CHECK を追加
            string mdlForcedNGResult = string.Empty;
            // 2016.08.18 FUJIKI FORCED NG CHECK を追加
            string  scanTime      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            string  displayAll    = string.Empty; // ログ用
            DataRow dr            = dtModule.NewRow();
            string  textResult    = "PASS";
            string  mdlSerialBin  = string.Empty;
            string  textSelectBin = string.Empty;

            // 2016.08.18 FUJIKI FORCED NG CHECK を追加
            if (forcedNGSwitch == "ON" && OK2ShipCheckSwitch == "ON")
            {
                string sql0 = "select serial from forceddata where serial = '" + mdlShort + "' and result = 1";
                mdlForcedNGResult = tf.sqlExecuteScalarStringOK2Ship(sql0);

                if (!string.IsNullOrEmpty(mdlForcedNGResult))
                {
                    textResult = "NG";
                    displayAll = "NG SERIAL";
                }
                else
                {
                    // Short Factory Serial No の検索
                    string sql1 = "select received_result from data where serial = '" + mdlShort + "' and received_result = '0'";
                    mdlOK2ShipResult = tf.sqlExecuteScalarStringOK2Ship(sql1);

                    // ビン情報を検索
                    if (string.IsNullOrEmpty(mdlOK2ShipResult))
                    {
                        mdlOK2ShipResult = "NG";
                        textResult       = "NG";
                    }
                    else
                    {
                        mdlOK2ShipResult = "OK";
                    }
                    displayAll = displayAll + "OK2:" + mdlOK2ShipResult;
                }
            }
            else
            {
                mdlOK2ShipResult = string.Empty;
                textResult       = "n/a";
                displayAll       = "test function off";
            }

            // 2017.03.08 FUJII  シリアル構成要素のチェックをオフ
            //トレーIDの新規採番
            // 先ずは、シリアルの構成要素のパターンが適正か、ユーザーデスクトップの設定ファイルを使用して確認する
            string matchResult = string.Empty;

            //string matchResult = matchSerialNumberingPattern(module);
            if (matchResult != string.Empty)
            {
                MessageBox.Show(matchResult + " does not match with desktop file's setting.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            // メモリ上のテーブルにレコードを追加
            dr["module_id"]   = module;
            dr["lot"]         = VBS.Left(module, 8);
            dr["bin"]         = mdlSerialBin;
            dr["tester_id"]   = displayAll;
            dr["test_result"] = textResult;
            dr["test_date"]   = DateTime.ParseExact(scanTime, "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);;
            dr["r_mode"]      = formReturnMode ? "T" : "F";
            dtModule.Rows.Add(dr);

            // アプリケーションフォルダに、日付とテスト結果のログを付ける
            log = Environment.NewLine + scanTime + "," + module + "," + displayAll + ":" + textResult;
            // log = Environment.NewLine + earlyTime + "," + module + "," + displayAll;

            // 同日日付のファイルが存在する場合は追記し、存在しない場合はファイルを作成追記する
            try
            {
                string outFile = outPath + DateTime.Today.ToString("yyyyMMdd") + ".txt";
                System.IO.File.AppendAllText(outFile, log, System.Text.Encoding.GetEncoding("UTF-8"));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            // データグリットビューの更新
            updateDataGridViews(dtModule, ref dgvModule);
        }
예제 #27
0
        // サブプロシージャ:データグリットビューの更新
        public void updateDataGridViews(ref DataTable dt, ref DataGridView dgv)
        {
            string   batchNo       = txtBatchNo.Text;
            string   modelNo       = cmbModelNo.Text;
            string   modelName     = txtModelName.Text;
            string   subAssyName   = cmbSubAssy.Text;
            DateTime batchDate     = dtpBatchDate.Value.Date;
            DateTime batchNextDate = dtpBatchDate.Value.Date.AddDays(1);
            string   shift         = cmbShift.Text;
            string   line          = cmbLine.Text;
            string   leader        = txtLeaderId.Text;
            string   leaderName    = txtLeaderName.Text;
            bool     b_batch       = chkBatch.Checked;
            bool     b_model       = chkModel.Checked;
            bool     b_subAssy     = chkSubAssy.Checked;
            bool     b_batchDate   = chkBatchDate.Checked;
            bool     b_shift       = chkShift.Checked;
            bool     b_line        = chkLine.Checked;
            bool     b_leader      = chkLeader.Checked;



            string sql1 = "select approve_by, check_by, batch_no, model_no, model_name, sub_assy_no, sub_assy_name, batch_date, " +
                          "shift, line, leader_id, leader_name, in_qty, out_qty, in_time, out_time, remark from t_batch_no where ";

            bool[] cr = { batchNo == String.Empty ? false : true,
                          modelNo == String.Empty ? false : true,
                          subAssyNo == String.Empty ? false : true,
                          true,
                          shift == String.Empty ? false : true,
                          line == String.Empty ? false : true,
                          leader == String.Empty ? false : true };

            bool[] ck = { b_batch,
                          b_model,
                          b_subAssy,
                          b_batchDate,
                          b_shift,
                          b_line,
                          b_leader };

            string sql2 = (!(cr[0] && ck[0]) ? String.Empty : "batch_no like '" + batchNo + "%' AND ") +
                          (!(cr[1] && ck[1]) ? String.Empty : "model_no = '" + modelNo + "' AND ") +
                          (!(cr[2] && ck[2]) ? String.Empty : "sub_assy_no = '" + subAssyNo + "' AND ") +
                          (!(cr[3] && ck[3]) ? String.Empty : "batch_date >= '" + batchDate + "' AND batch_date < '" + batchNextDate + "' AND ") +
                          (!(cr[4] && ck[4]) ? String.Empty : "shift = '" + shift + "' AND ") +
                          (!(cr[5] && ck[5]) ? String.Empty : "line = '" + line + "' AND ") +
                          (!(cr[6] && ck[6]) ? String.Empty : "leader_id = '" + leader + "' AND ");

            bool b_all = (cr[0] && ck[0]) || (cr[1] && ck[1]) || (cr[2] && ck[2]) || (cr[3] && ck[3]) || (cr[4] && ck[4]) ||
                         (cr[5] && ck[5]) || (cr[6] && ck[6]);

            System.Diagnostics.Debug.Print(b_all.ToString());
            System.Diagnostics.Debug.Print(cr[0].ToString() + " " + ck[0].ToString() + " " + cr[1].ToString() + " " + ck[1].ToString() + " " +
                                           cr[2].ToString() + " " + ck[2].ToString() + " " + cr[3].ToString() + " " + ck[3].ToString() + " " +
                                           cr[4].ToString() + " " + ck[4].ToString() + cr[5].ToString() + " " + ck[5].ToString() + " " + cr[6].ToString() + " " + ck[6].ToString());

            if (!b_all)
            {
                MessageBox.Show("Please select at least one check box and fill the criteria.", "Notice",
                                MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                return;
            }

            string sql3 = sql1 + VBStrings.Left(sql2, sql2.Length - 5);

            System.Diagnostics.Debug.Print(sql3);

            dt.Clear();
            TfSQL tf = new TfSQL();

            tf.sqlDataAdapterFillDatatable(sql3, ref dt);

            // データグリットビューへDTAATABLEを格納
            dgv.DataSource          = dt;
            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

            //行ヘッダーに行番号を表示する
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                dgv.Rows[i].HeaderCell.Value = (i + 1).ToString();

                if (dgv.Rows[i].Cells[1].Value.ToString() != "")
                {
                    dgv.Rows[i].Cells[0].Value    = true;
                    dgv.Rows[i].Cells[0].ReadOnly = true;
                }
                else
                {
                    dgv.Rows[i].Cells[0].Value = false;
                }

                if (dgv.Rows[i].Cells[2].Value.ToString() == "")
                {
                    dgv.Rows[i].Cells[0].ReadOnly = true;
                }
            }
            //行ヘッダーの幅を自動調節する
            dgv.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

            // 一番下の行を表示する
            if (dgv.Rows.Count != 0)
            {
                dgv.FirstDisplayedScrollingRowIndex = dgv.Rows.Count - 1;
            }
        }
예제 #28
0
        // サブプロシージャ:データグリットビューの更新
        public void updateDataGridViews(DataTable dt, ref DataGridView dgv, bool load)
        {
            DateTime registerDateFrom = dtpRegsterDateFrom.Value;
            DateTime registerDateTo   = dtpRegisterDateTo.Value.AddDays(1);
            string   invoiceNo        = txtInvoiceNo.Text;
            string   palletId         = txtPalletId.Text;
            string   lot      = txtLot.Text;
            string   cartonId = txtCartonId.Text;
            string   batch    = txtBatch.Text;

            bool b_registerDateFrom = cbxRegisterDateFrom.Checked;
            bool b_registerDateTo   = cbxRegisterDateTo.Checked;
            bool b_invoiceNo        = cbxInvoiceNo.Checked;
            bool b_palletId         = cbxPalletId.Checked;
            bool b_lot        = cbxLot.Checked;
            bool b_cartonId   = cbxCartonId.Checked;
            bool b_batch      = cbxBatch.Checked;
            bool b_multi_lot  = cbxMultiLot.Checked;
            bool b_hideCancel = cbxHideCancel.Checked;

            // ユーザーがパックIDを検索条件として指定した場合は、個別のSQL文を使用する
            string sqlX = "select pallet_id, lot, l_cnt, m_qty, batch, register_date, rg_user, cancel_date, cl_user, invoice_no from t_pallet " +
                          "where pallet_id in (select pallet_id from t_carton where carton_id like '" + cartonId + "%')";

            // ユーザーが選択した検索条件を、SQL文に反映する
            string sql1 = "select pallet_id, lot, l_cnt, m_qty, batch, register_date, rg_user, cancel_date, cl_user, invoice_no from t_pallet where ";

            bool[] cr = { true,
                          true,
                          invoiceNo == string.Empty ? false : true,
                          palletId == string.Empty ? false : true,
                          lot == string.Empty ? false : true,
                          cartonId == string.Empty ? false : true,
                          batch == string.Empty ? false : true,
                          true,
                          true };

            bool[] ck = { b_registerDateFrom,
                          b_registerDateTo,
                          b_invoiceNo,
                          b_palletId,
                          b_lot,
                          b_cartonId,
                          b_batch,
                          b_multi_lot,
                          b_hideCancel };

            string sql2 = (!(cr[0] && ck[0]) ? string.Empty : "register_date >= '" + registerDateFrom + "' AND ") +
                          (!(cr[1] && ck[1]) ? string.Empty : "register_date < '" + registerDateTo + "' AND ") +
                          (!(cr[2] && ck[2]) ? string.Empty : "invoice_no like '%" + invoiceNo + "%' AND ") +
                          (!(cr[3] && ck[3]) ? string.Empty : "pallet_id like '%" + palletId + "%' AND ") +
                          (!(cr[4] && ck[4]) ? string.Empty : "lot like '%" + lot + "%' AND ") +
                          (!(cr[5] && ck[5]) ? string.Empty : "carton_id like '%" + cartonId + "%' AND ") +
                          (!(cr[6] && ck[6]) ? string.Empty : "batch = '" + batch + "' AND ") +
                          (!(cr[7] && ck[7]) ? string.Empty : "l_cnt >= 2 AND ") +
                          (!(cr[8] && ck[8]) ? string.Empty : "cancel_date is null AND ");

            bool b_all = (cr[0] && ck[0]) || (cr[1] && ck[1]) || (cr[2] && ck[2]) || (cr[3] && ck[3]) || (cr[4] && ck[4]) || (cr[5] && ck[5]) || (cr[6] && ck[6]);

            if (!b_all)
            {
                MessageBox.Show("Please select at least one check box and fill the criteria.", "Notice",
                                MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                return;
            }

            string sql3 = sql1 + VBS.Left(sql2, sql2.Length - 5) + " order by pallet_id";
            string sql4 = string.Empty;

            if (cartonId != string.Empty && b_cartonId)
            {
                sql4 = sqlX;
            }
            else
            {
                sql4 = sql3;
            }
            System.Diagnostics.Debug.Print(sql4);

            // SQL結果を、DTAATABLEへ格納
            dt.Clear();
            TfSQL tf = new TfSQL();

            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql4, ref dt);

            // データグリットビューへDTAATABLEを格納
            dgv.DataSource          = dt;
            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

            // グリットビュー右端にボタンを追加(初回のみ)
            if (load)
            {
                addButtonsToDataGridView(dgv);
            }

            //行ヘッダーに行番号を表示する
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                dgv.Rows[i].HeaderCell.Value = (i + 1).ToString();
            }

            //行ヘッダーの幅を自動調節する
            dgv.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

            // 一番下の行を表示する
            if (dgv.Rows.Count != 0)
            {
                dgv.FirstDisplayedScrollingRowIndex = dgv.Rows.Count - 1;
            }
        }
예제 #29
0
        // シリアルがスキャンされた時の処理
        private void txtModuleId_KeyDown(object sender, KeyEventArgs e)
        {
            // エンターキーの場合、テキストボックスの桁数が15桁の場合のみ、処理を行う
            if (e.KeyCode != Keys.Enter || txtTrayId.Text.Length != 21)
            {
                return;
            }

            string tray = txtTrayId.Text;
            string sql  = "select tray_id, lot, qty, register_date, rg_dept, multi_lot, " +
                          "case when cancel_date is not null then to_char(cancel_date,'YYYY/MM/DD') " +
                          "when pack_id is not null then pack_id else 'OK' end as check " +
                          "from t_tray where tray_id='" + tray + "'";

            System.Diagnostics.Debug.Print(sql);
            DataTable dt = new DataTable();
            TfSQL     tf = new TfSQL();

            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dt);

            if (dt.Rows.Count != 0)
            {
                bool   warnedAlready = false;
                string sql2          = " select sum(case when tm1.test_result in ('n/a', 'PASS') then 1 else 0 end) as okcount" +
                                       "      , count(tm1.test_result) as totalcount" +
                                       " from t_tray " +
                                       " left join t_module tm1 on tm1.tray_id = t_tray.tray_id " +
                                       " where t_tray.tray_id = '" + tray + "'";
                DataTable dt2 = new DataTable();
                TfSQL     tf2 = new TfSQL();
                tf2.sqlDataAdapterFillDatatableFromTrayGuardDb(sql2, ref dt2);

                if ((long)dt2.Rows[0]["okcount"] != 24)
                {
                    MessageBox.Show("OK module is not 24", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    warnedAlready = true;
                    //if (txtLoginDept.Text != "PC") return;
                }
                if ((long)dt2.Rows[0]["totalcount"] != 24 && !warnedAlready)
                {
                    MessageBox.Show("Module data is not 24", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    warnedAlready = true;
                    //if (txtLoginDept.Text != "PC") return;
                }

                if ((int)dt.Rows[0]["qty"] != 24 && !warnedAlready)
                {
                    MessageBox.Show("Module in tray is not 24.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    warnedAlready = true;
                    //if (txtLoginDept.Text != "PC") return;
                }
            }

            // 先ずは、シリアルの構成要素のパターンが適正か、ユーザーデスクトップの設定ファイルを使用して確認する
            // 2017/03/07 Fujii 構成要素チェックのオフ
            //string matchResult = matchSerialNumberingPattern(tray);
            string matchResult = string.Empty;

            if (matchResult != string.Empty)
            {
                MessageBox.Show(matchResult + " does not match with desktop file's setting.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            // テスターデータに該当がない場合でも、ユーザー認識用に表示するための処理
            DataRow dr = dtTray.NewRow();

            dr["tray_id"] = tray;
            // テスターデータに該当がある場合の処理
            if (dt.Rows.Count != 0)
            {
                dr["lot"]           = (string)dt.Rows[0]["lot"];
                dr["qty"]           = (int)dt.Rows[0]["qty"];
                dr["register_date"] = (DateTime)dt.Rows[0]["register_date"];
                dr["rg_dept"]       = (string)dt.Rows[0]["rg_dept"];
                dr["multi_lot"]     = (string)dt.Rows[0]["multi_lot"];
                dr["check"]         = (string)dt.Rows[0]["check"];
            }

            // メモリ上のテーブルにレコードを追加
            dtTray.Rows.Add(dr);

            // データグリットビューの更新
            updateDataGridViews(dtTray, ref dgvTray, false);
        }
예제 #30
0
        // サブプロシージャ:シリアルの構成要素のパターンが適正か、ユーザーデスクトップの設定ファイルを使用して確認する
        private string matchSerialNumberingPattern(string tray)
        {
            string result = string.Empty;

            string sql = "select module_id, substr(module_id, 1, 3) as plant, substr(module_id, 4, 1) as year, substr(module_id, 5, 2) as week, " +
                         "substr(module_id, 7, 1) as day, substr(module_id, 8, 1) as line, substr(module_id, 12, 4) as eeee, " +
                         "substr(module_id, 16, 1) as revision, substr(module_id, 19, 1) as mass, substr(module_id, 20, 1) as flexure, " +
                         "substr(module_id, 21, 1) as cover_base, substr(module_id, 22, 2) as dframe, substr(module_id, 23, 1) as fpc, " +
                         "substr(module_id, 24, 1) as shift from t_module where tray_id = '" + tray + "'";

            System.Diagnostics.Debug.Print(sql);
            DataTable dt = new DataTable();
            TfSQL     tf = new TfSQL();

            tf.sqlDataAdapterFillDatatableFromTrayGuardDb(sql, ref dt);

            // DBから取得したモジュール構成要素のリストを、デスクトップで指定されたリストでフィルターを掛け、該当文字列を警告メッセージに追加する
            if (!plant1.Any(s => s == "XXX"))
            {
                List <string> plant2 = dt.AsEnumerable().Select(r => r.Field <string>("plant")).Except(plant1).ToList();
                foreach (var e in plant2)
                {
                    result += "Plant '" + e + "'" + Environment.NewLine;
                }
            }
            if (!year1.Any(s => s == "XXX"))
            {
                List <string> year2 = dt.AsEnumerable().Select(r => r.Field <string>("year")).Except(year1).ToList();
                foreach (var e in year2)
                {
                    result += "Year '" + e + "'" + Environment.NewLine;
                }
            }
            if (!week1.Any(s => s == "XXX"))
            {
                List <string> week2 = dt.AsEnumerable().Select(r => r.Field <string>("week")).Except(week1).ToList();
                foreach (var e in week2)
                {
                    result += "Week '" + e + "'" + Environment.NewLine;
                }
            }
            if (!day1.Any(s => s == "XXX"))
            {
                List <string> day2 = dt.AsEnumerable().Select(r => r.Field <string>("day")).Except(day1).ToList();
                foreach (var e in day2)
                {
                    result += "Day '" + e + "'" + Environment.NewLine;
                }
            }
            if (!line1.Any(s => s == "XXX"))
            {
                List <string> line2 = dt.AsEnumerable().Select(r => r.Field <string>("line")).Except(line1).ToList();
                foreach (var e in line2)
                {
                    result += "Line '" + e + "'" + Environment.NewLine;
                }
            }
            if (!eeee1.Any(s => s == "XXX"))
            {
                List <string> eeee2 = dt.AsEnumerable().Select(r => r.Field <string>("eeee")).Except(eeee1).ToList();
                foreach (var e in eeee2)
                {
                    result += "4E '" + e + "'" + Environment.NewLine;
                }
            }
            if (!revision1.Any(s => s == "XXX"))
            {
                List <string> revision2 = dt.AsEnumerable().Select(r => r.Field <string>("revision")).Except(revision1).ToList();
                foreach (var e in revision2)
                {
                    result += "Revision '" + e + "'" + Environment.NewLine;
                }
            }
            if (!mass1.Any(s => s == "XXX"))
            {
                List <string> mass2 = dt.AsEnumerable().Select(r => r.Field <string>("mass")).Except(mass1).ToList();
                foreach (var e in mass2)
                {
                    result += "Mass '" + e + "'" + Environment.NewLine;
                }
            }
            if (!flexure1.Any(s => s == "XXX"))
            {
                List <string> flexure2 = dt.AsEnumerable().Select(r => r.Field <string>("flexure")).Except(flexure1).ToList();
                foreach (var e in flexure2)
                {
                    result += "Flexure '" + e + "'" + Environment.NewLine;
                }
            }
            if (!cover_base1.Any(s => s == "XXX"))
            {
                List <string> cover_base2 = dt.AsEnumerable().Select(r => r.Field <string>("cover_base")).Except(cover_base1).ToList();
                foreach (var e in cover_base2)
                {
                    result += "Cover/base '" + e + "'" + Environment.NewLine;
                }
            }
            if (!dframe1.Any(s => s == "XXX"))
            {
                List <string> dframe2 = dt.AsEnumerable().Select(r => r.Field <string>("dframe")).Except(dframe1).ToList();
                foreach (var e in dframe2)
                {
                    result += "Dframe '" + e + "'" + Environment.NewLine;
                }
            }
            if (!fpc1.Any(s => s == "XXX"))
            {
                List <string> fpc2 = dt.AsEnumerable().Select(r => r.Field <string>("fpc")).Except(fpc1).ToList();
                foreach (var e in fpc2)
                {
                    result += "Fpc '" + e + "'" + Environment.NewLine;
                }
            }
            if (!shift1.Any(s => s == "XXX"))
            {
                List <string> shift2 = dt.AsEnumerable().Select(r => r.Field <string>("shift")).Except(shift1).ToList();
                foreach (var e in shift2)
                {
                    result += "Shift '" + e + "'" + Environment.NewLine;
                }
            }

            return(result);
            //for (int i = 0; i < dt.Rows.Count; i++)
            //{
            //    if (!plant1.Any(s=> s=="XXX") && dt.Rows[i]["plant"].ToString() != plant) result += module + " Plant '" + dt.Rows[i]["plant"].ToString() + "'" + Environment.NewLine;
            //    else if (!year1.Any(s=> s=="XXX") && dt.Rows[i]["year"].ToString() != year) result += module + " Year '" + dt.Rows[i]["year"].ToString() + "'" + Environment.NewLine;
            //    else if (!week1.Any(s=> s=="XXX") && dt.Rows[i]["week"].ToString() != week) result += module + " Week '" + dt.Rows[i]["week"].ToString() + "'" + Environment.NewLine;
            //    else if (!day1.Any(s=> s=="XXX") && dt.Rows[i]["day"].ToString() != day) result += module + " Day '" + dt.Rows[i]["day"].ToString() + "'" + Environment.NewLine;
            //    else if (!line1.Any(s=> s=="XXX") && dt.Rows[i]["line"].ToString() != line) result += module + " Line '" + dt.Rows[i]["line"].ToString() + "'" + Environment.NewLine;
            //    else if (!eeee1.Any(s=> s=="XXX") && dt.Rows[i]["eeee"].ToString() != eeee) result += module + " 4E '" + dt.Rows[i]["eeee"].ToString() + "'" + Environment.NewLine;
            //    else if (!revision1.Any(s=> s=="XXX") && dt.Rows[i]["revision"].ToString() != revision) result += module + " Revision '" + dt.Rows[i]["revision"].ToString() + "'" + Environment.NewLine;
            //    else if (!mass1.Any(s=> s=="XXX") && dt.Rows[i]["mass"].ToString() != mass) result += module + " Mass '" + dt.Rows[i]["mass"].ToString() + "'" + Environment.NewLine;
            //    else if (!flexure1.Any(s=> s=="XXX") && dt.Rows[i]["flexure"].ToString() != flexure) result += module + " Flexure '" + dt.Rows[i]["flexure"].ToString() + "'" + Environment.NewLine;
            //    else if (!cover_base1.Any(s=> s=="XXX") && dt.Rows[i]["cover_base"].ToString() != cover_base) result += module + " Cover/base '" + dt.Rows[i]["cover_base"].ToString() + "'" + Environment.NewLine;
            //    else if (!dframe1.Any(s=> s=="XXX") && dt.Rows[i]["dframe"].ToString() != dframe) result += module + " D-Frame '" + dt.Rows[i]["dframe"].ToString() + "'" + Environment.NewLine;
            //    else if (!fpc1.Any(s=> s=="XXX") && dt.Rows[i]["fpc"].ToString() != fpc) result += module + " FPC '" + dt.Rows[i]["fpc"].ToString() + "'" + Environment.NewLine;
            //    else if (!shift1.Any(s=> s=="XXX") && dt.Rows[i]["shift"].ToString() != shift) result += module + " Shift '" + dt.Rows[i]["shift"].ToString() + "'" + Environment.NewLine;
            //}
        }