// シリアルがスキャンされた時の処理 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); }