0

Designer を使用してデータ セットを作成しましたが、問題なくデータを取得できます。他のデータを更新した後、元の行のステータスを変更する必要があります。私は StackOverflow と MSDN を精査しましたが、提案されたすべてを試したと思います - 運が悪いです。

AFEDataSetTableAdapters.AFE_allTableAdapter taAFEAll = new AFEDataSetTableAdapters.AFE_allTableAdapter();
AFEDataSet.AFE_allDataTable dtAFEAll = new AFEDataSet.AFE_allDataTable();
taAFEAll.Fill(dtAFEAll, sAFENumber);
if (dtAFEAll.Count != 1)
{
    // error condition - should only ever be one row
}
DataRow drAFE = dtAFEAll.Rows[0];

// ...すべてがうまくいけば...

if (...successful...)
{
    drAFE.BeginEdit();
    drAFE["AFEStatus"] = "Published";
    drAFE.EndEdit();
    try
    {
        drAFE.AcceptChanges();
        int iTemp = taAFEAll.Update(dsAFE.AFE_all);
    }
    catch (Exception ex)
    {
        sMessage = ex.Message.ToString();
    }
}

BeginEdit、EndEdit、AcceptChanges の有無にかかわらず試してみました。変化なし。メソッドが呼び出されると、.UpdatedrAFE の ItemArray が AFEStatus の変更された値を示していることが (デバッグで) わかります。ただし、Update はゼロを返し、データベースは変更されません。

DataSetDesigner の背後にあるコードを確認したところ、AFE_all テーブルに Update ステートメントが定義されています。

どこで私は間違えましたか?または、あと 1 ステップ足りないものはありますか?

4

1 に答える 1

0

この行を削除する必要があります

 drAFE.AcceptChanges();

AcceptChanges() メソッドは、DataRow の状態を Unchanged に「変更」するため、Update を呼び出すと、保存する行がありません。

MSDN から

DataSet で AcceptChanges を呼び出すと、まだ編集モードにある DataRow オブジェクトは、編集を正常に終了します。各 DataRow の RowState プロパティも変更されます。追加および変更された行は変更されず、削除された行は削除されます

于 2013-04-24T19:41:56.680 に答える