1

私は3つのテーブルを持っています。私はemployeemaintableというメインテーブルを持っています

  Fieldname    Data Type 
* EID          Text
  Firsname     Text
  Surname      Text

employeeJobdetailstable という 2 番目のテーブル

 Fieldname      Data Type
* EJobID        Text
  EID           Text
  JobDescrip    Text

EmployeeAppraisalDetails という 3 番目のテーブル

   Fieldname         DataType
   EApprID           Text
   EJobID           Text
   GoalsAchieved     Memo

関係は、employeemaintable は多くの employeeJobdetailstable を持つことができ、employeeJobdetailstable は多くの EmployeeAppraisalDetails を持つことができます。

  1. レコード employeemaintable を正常に作成、更新、および削除できます
  2. レコードを正常に作成、更新、および削除できます employeeJobdetailstable
  3. 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 つの役職に複数の評価を含めることができます。

どうもありがとう

更新1 ExecuteNonQueryでデバッグしましたが、これが得られたものです

string goals  === "Test"
string eapprid === "". 

更新 2

GoalsAchieved のデータ型をメモからテキストに変更しました。現在、EmployeeAppraisalDetails に 2 つのレコードがあります。以前の記録ではなく、最新の記録を一度しか更新できませんでした。そのため、アプリケーションを閉じて再起動すると、どちらのレコードも更新できません

更新 3 MS Access 2003 と C# を使用しているため、今回は update パラメータを使用しないことにしました。SQL Server を使用する必要があった場合、手間をかける価値はありません。

4

2 に答える 2

0

このスレッドを閉じる理由により、更新プログラム 3 があります。皆さんの貴重な専門知識に感謝します。

于 2013-05-16T12:50:47.217 に答える