Пример #1
0
        // データ受信が発生したときのイベント処理(デレゲート先)
        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
0
        // ユーザーログイン時、パスワードとログイン状態の確認(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);
                }
            }
        }
Пример #3
0
        // サブプロシージャ:参照すべき接続文字列を 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);
        }