0

従業員がコンボ ボックスから自分の名前を選択し、従業員の名前に割り当てられたテーブルに製品をスキャンする必要がある在庫インターフェイスの特定の部分があります。

私の好奇心は次のとおりです。 [ EDIT, ADDOR ] ボタンを押すと、その従業員名を含むSwitch - CaseステートメントDELETEから、この関数を実行するテーブルを認識します。問題は、各従業員のコードが長いことです。特に、Switch - Caseステートメントを持つ 9 人の従業員の場合は特にそうです。

これを簡素化する方法やコードを短くする方法について何かアドバイスはありますか? 使用に失敗しているパラメーター化された SQLについて、事前に理解しています。最初にこれを達成しようとしているだけです。

private void btnAdd_Click(object sender, EventArgs e)
    {
        ActiveControl = txtSerialN;
        if (!string.IsNullOrEmpty(txtSerialN.Text) && !string.IsNullOrEmpty(cboEmpName.Text))

            switch (cboEmpName.SelectedItem.ToString().Trim())
            {
                case "John Doe":
                    try
                    {
                        connection.Open();
                        OleDbCommand command = new OleDbCommand();
                        command.Connection = connection;

                        command.CommandText = "INSERT INTO JohnDoe(SerialNumber,PartNumber,DateEntered,Customer) values ('" + txtSerialN.Text + "','" + txtPart.Text + "','" + txtDate.Text + "','" + txtCustomer.Text + "')";
                        command.ExecuteNonQuery();
                        MessageBox.Show("Inventory Added".PadLeft(23));

                        connection.Close();
                        txtSerialN.Clear();
                        txtPart.Clear();
                        txtDate.Clear();
                        txtCustomer.Clear();

                        command.CommandText = "SELECT * FROM JohnDoe ORDER BY PartNumber";
                        OleDbDataAdapter db = new OleDbDataAdapter(command);
                        DataTable dt = new DataTable();
                        db.Fill(dt);
                        dataGridEmpParts.DataSource = dt;
                    }

                    catch (OleDbException)
                    {
                        string strmsg = "THIS SERIAL NUMBER ALREADY EXISTS ! , Please try again";
                        MessageBox.Show(strmsg, "YOU CAN'T ENTER THE SAME ONE AGAIN", MessageBoxButtons.OK,
                        MessageBoxIcon.Exclamation,
                        MessageBoxDefaultButton.Button1);
                        connection.Close();
                    }
                    break;
            }
    }
4

2 に答える 2

1

むしろ、EmployeeName、AssignedTable などの列を含むルックアップ テーブルを作成し、パラメーター値に基づいてコマンド テキストを動的に構築したいと考えています。

于 2016-06-07T01:19:56.857 に答える
0

この問題は、データベースを変更することでより効率的に修正できると思います。おそらく、従業員名のフィールドを追加するのと同じくらい簡単です。

于 2016-06-07T02:51:14.077 に答える