コード例 #1
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);
        }