我有三個表。我已經叫主表稱爲employeeJobdetailstable爲什麼我的方法沒有更新
Fieldname Data Type
* EJobID Text
EID Text
JobDescrip Text
第三個表稱爲EmployeeAppraisalDetails
employeemaintableFieldname Data Type
* EID Text
Firsname Text
Surname Text
二表
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,或者我在做錯誤的更新方法?這個想法是讓employeeJobdetail穩定許多EmployeeAppraisalDetails。一個職位可以有很多評估。
巨大的感謝
更新1 我做的ExecuteNonQuery調試,這是我得到
string goals === "Test"
string eapprid === "".
更新2
改變的數據類型爲GoalsAchieved從備忘錄到文本。我目前在EmployeeAppraisalDetails中有兩條記錄。我只能更新最近一次記錄而非以前的記錄。所以,當我關閉並重新啓動應用程序我不能代表任何的記錄
更新3 因爲我使用的MS Access 2003和C#更新,我已經決定不再在這個場合使用更新的參數。當SQL Server應該被使用時,這是不值得的麻煩。
ExecuteNonQuery返回受影響的記錄數。那個數字是多少? – LarsTech 2013-05-09 17:31:45
當您在MS-Access SQL Viewer中運行查詢時,您是否看到相同的問題? – 2013-05-09 17:42:26
我不知道它是什麼,但我做了一個調試,如你所建議的,我已經更新。我也將使用MS-Access SQL Viewer。 – bucketblast 2013-05-09 17:51:46