// データ受信が発生したときのイベント処理(デレゲート先) private void RcvDataToBufferDataTable(string cmd) { // 測定値の送信要求に対する返信の場合のみ処理 //if (cmd.Length != 17) return; // 因数の決定:検査項目に応じて、2つの測定値の差を、因数で割って表示・登録する(デフォルト因数は1) string inspect = txtInspect.Text; double factor = 1; List <string> list10 = new List <string> { "CAFBVP2", "CAFBVP4", "CAFBVP2", "CAFBVP4", "CAFBVP2", "CAFBVP4" }; List <string> list5 = new List <string> { "RBCAVL", "RBCAVL", "RBCAVL" }; if (list10.Contains(inspect)) { factor = 10; } if (list5.Contains(inspect)) { factor = 5; } // 正しい文字列から始まる受信文字列のみ処理する if (cmd.Substring(0, 2) == command2) { // 測定値のテキストを、DOUBLEに変換してBUFFERTABLEへ格納する double value = 0; string sql = "select dbplace from tbl_model_dbplace where model='" + txtModel.Text + "'"; System.Diagnostics.Debug.Print(sql); TfSQL tf = new TfSQL(); string dbplace = tf.sqlExecuteScalarString(sql); // HAYWARD2は10桁の精度、CARは8桁の精度 if (dbplace == "HW2") { double.TryParse(cmd.Substring(4, 10), out value); } else if (dbplace == "CAR") { double.TryParse(cmd.Substring(4, 8), out value); } dtBuffer.Rows[vAdr][hAdr] = value; // 上位と下位の、2つの測定値の差を、3行目に表示する if (dtBuffer.Rows[0][hAdr].ToString() != String.Empty && dtBuffer.Rows[1][hAdr].ToString() != String.Empty) { dtBuffer.Rows[2][hAdr] = Math.Round((double.Parse(dtBuffer.Rows[0][hAdr].ToString()) - double.Parse(dtBuffer.Rows[1][hAdr].ToString())) / factor, 4); } // グリットビューの更新 updateDataGripViews(dtBuffer, dtHistory, ref dgvBuffer, ref dgvHistory); // スペック外のセルをマーキングする(一時テーブル) colorBufferViewBySpec(value, ref dgvBuffer); } }
// ユーザーログイン時、パスワードとログイン状態の確認(2重ログインの防止) private void btnLogIn_Click(object sender, EventArgs e) { string sql = null; string user = null; string pass = null; bool login = false; user = cmbUserName.Text; if (user != null) { TfSQL tf = new TfSQL(); sql = "select pass FROM qc_user WHERE qcuser='******'"; pass = tf.sqlExecuteScalarString(sql); sql = "select loginstatus FROM qc_user WHERE qcuser='******'"; login = tf.sqlExecuteScalarBool(sql); if (pass == txtPassword.Text) { if (login) { DialogResult reply = MessageBox.Show("This user account is currently used by other user," + System.Environment.NewLine + "or the log out last time had a problem." + System.Environment.NewLine + "Do you log in with this account ?", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (reply == DialogResult.No) { return; } } // ログイン状態をTRUEへ変更 sql = "UPDATE qc_user SET loginstatus=true WHERE qcuser='******'"; bool res = tf.sqlExecuteNonQuery(sql, false); // 子フォームForm1を表示し、デレゲートイベントを追加: frmItem f1 = new frmItem(); f1.RefreshEvent += delegate(object sndr, EventArgs excp) { // Form1を閉じる際、ログイン状態をFALSEへ変更し、当フォームForm5も閉じる sql = "UPDATE qc_user SET loginstatus=false WHERE qcuser='******'"; res = tf.sqlExecuteNonQuery(sql, false); this.Close(); }; f1.updateControls(user); f1.Show(); this.Visible = false; } else if (pass != txtPassword.Text) { MessageBox.Show("Password does not match", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } }
// サブプロシージャ:参照すべき接続文字列を PQMテーブル名を特定する private string decideConnectionString(string model) { string sql = "select dbplace from tbl_model_dbplace where model='" + model + "'"; System.Diagnostics.Debug.Print(sql); TfSQL tf = new TfSQL(); string dbplace = tf.sqlExecuteScalarString(sql); if (dbplace == "HW2") { conStringPqmDb = conStringPqmDbP2; } else if (dbplace == "CAR") { conStringPqmDb = conStringPqmDbP4; } return(conStringPqmDb); }