我有一个库存界面的特定部分,要求员工从组合框中选择他或她的名字,然后将产品扫描到分配给员工姓名的表格。
我的好奇心是:当点击EDIT
,ADD
或DELETE
按钮时,它会从 Switch - Case 语句中知道要执行此功能的表格用那个员工的名字就可以了。问题是,每个员工的代码都很长,特别是对于每个都有 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;
}
}
答案 0 :(得分:1)
我宁愿建立一个包含EmployeeName,AssignedTable等列的查找表,并根据参数值动态构造commandtext。
答案 1 :(得分:0)
我怀疑通过更改数据库可以更有效地修复此问题。也许就像为员工姓名添加字段一样简单。