我有三张桌子。我有一个名为employeemaintable的主表
Fieldname Data Type
* EID Text
Firsname Text
Surname Text
第二个表称为employeeJobdetailstable
Fieldname Data Type
* EJobID Text
EID Text
JobDescrip Text
第三个表名为 EmployeeAppraisalDetails
Fieldname DataType
EApprID Text
EJobID Text
GoalsAchieved Memo
关系是employeemaintable 可以有很多employeeJobdetailstable,并且employeeJobdetailstable 可以有很多EmployeeAppraisalDetails。
- 我可以成功创建、更新和删除记录employeemaintable
- 我可以成功创建、更新和删除记录employeeJobdetailstable
- 我可以插入和删除 EmployeeAppraisalDetails 的记录,但我无法更新。
这是我的更新方法...
EAppr 类
public static void AUpdate(string goals, string eapprid)
{
var con = GetConnection();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = (@"UPDATE [EmployeeAppraisalDetails] SET [Goalsachieved] = ? WHERE [EApprID] = ?");
cmd.Parameters.AddWithValue("@Goalsachieved", goals);
cmd.Parameters.AddWithValue("@EApprID", eapprid);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
主班
private void btnUpdateAppr_Click(object sender, EventArgs e)
{
EAppr.AUpdate(cBApprScore.Text, txtApprID.Text);
}
我的问题
我究竟做错了什么?没有错误,所以我认为这是因为 EmployeeAppraisalDetails 未链接到 employeemaintable 还是我在更新方法上做错了什么?这个想法是让employeeJobdetailstable 有许多EmployeeAppraisalDetails。一个职位可以有很多评价。
非常感谢
更新 1 我在 ExecuteNonQuery 上进行了调试,这就是我得到的
string goals === "Test"
string eapprid === "".
更新 2
将目标的数据类型从备忘录更改为文本。我目前在 EmployeeAppraisalDetails 中有两条记录。我只能更新最新记录而不是以前的记录一次。因此,当我关闭并重新启动应用程序时,我无法更新任何一条记录
更新 3 因为我使用的是 MS Access 2003 和 C#,所以我决定这次不使用更新参数。应该使用 SQL Server 时不值得麻烦。