3

厳密に型指定されたデータセットを使用して、テーブル内の既存のレコードを更新できないようです。新しいレコードを追加できますが、既存のレコードを変更すると機能しません。

これが私のコードです:

 private void AddEmplMaster()
 {           
     dsEmplMast dsEmpMst = new dsEmplMast();

     SqlConnection cn = new SqlConnection();
     cn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["cn.ConnectionString"];

     SqlDataAdapter da1 = new SqlDataAdapter("SELECT * FROM UPR00100", cn);
     SqlCommandBuilder cb1 = new SqlCommandBuilder(da1);

     da1.Fill(dsEmpMst.UPR00100);

     DataTable dtMst = UpdateEmpMst(dsEmpMst);
     da1.Update(dsEmpMst.UPR00100);
 }  

このプロシージャは、変更されたフィールドをレコードに割り当てるために上記から呼び出されます。

private DataTable UpdateEmpMst(dsEmplMast dsEmpMst)
{  
    DataTable dtMst = new DataTable();

    try
    {               
        dsEmplMast.UPR00100Row empRow =  dsEmpMst.UPR00100.NewUPR00100Row();

        empRow.EMPLOYID = txtEmplId.Text.Trim();
        empRow.LASTNAME = txtLastName.Text.Trim();
        empRow.FRSTNAME = txtFirstName.Text.Trim();
        empRow.MIDLNAME = txtMidName.Text.Trim();
        empRow.ADRSCODE = "PRIMARY";
        empRow.SOCSCNUM = txtSSN.Text.Trim();
        empRow.DEPRTMNT = ddlDept.SelectedValue.Trim();
        empRow.JOBTITLE = txtJobTitle.Text.Trim();
        empRow.STRTDATE = DateTime.Today;
        empRow.EMPLOYMENTTYPE = "1";

        dsEmpMst.UPR00100.Rows.Add(empRow);

    }
    catch { }
    return dtMst;
}  

ありがとうございました

アップデート:

わかりました。私のUpdateEmpMst()手順では、レコードが存在するかどうかを確認してから、最初に取得する必要がありました。そうでない場合は、追加する新しいレコードを作成します。これが私が追加したものです:

try
{
    dsEmplMast.UPR00100Row empRow; 
    empRow = dsEmpMst.UPR00100.FindByEMPLOYID(txtEmplId.Text.Trim());

    if (empRow == null)
    {
         empRow = dsEmpMst.UPR00100.NewUPR00100Row();
         dsEmpMst.UPR00100.Rows.Add(empRow);
    }  

次に、作成した新しいデータにデータを割り当て、empRow正常に更新します。

4

1 に答える 1

1

データセット内の既存のレコードを編集するには、特定の行の特定の列のデータにアクセスする必要があります。型指定されたデータセットと型指定されていないデータセットの両方のデータには、次の方法でアクセスできます。 テーブル、行、および列のコレクションのインデックスを使用。テーブル名と列名をそれぞれのコレクションに文字列として渡す。型指定されたデータセットは型指定されていないデータセットと同じ構文を使用できますが、型指定されたデータセットを使用することにはさらに利点があります。詳細については、以下の「型指定されたデータセットを使用して既存のレコードを更新するには」セクションを参照してください。型指定されたデータセットまたは型指定されていないデータセットの既存のレコードを更新するには DataRow オブジェクト内の特定の列に値を割り当てます。型指定されていないデータセットのテーブルと列の名前は、設計時には使用できないため、それぞれのインデックスを介してアクセスする必要があります。

于 2013-06-06T19:56:51.820 に答える