2016-04-26 25 views
0

テーブルアダプターのdeleteコマンドは、実際には行が「削除」された日時を持つ行を更新するストアード・プロシージャーであり、別の列で削除を行ったユーザーです実際に行を削除したいが、将来の選択には含まれないようにフラグを立てる。私は以下のように私のデータテーブルのRowDeletingイベントを使用しています、私はエラーを受け取っていない、データベーステーブル内の私の2つの列は正常に更新されていませんが、行がデータテーブルにバインドされたdatagridviewから削除されています。どこが間違っていますか?DataTabe_RowDeleting、データベースが更新されていません

private void PROCFixedIncomeTradesSelect_RowDeleting(object sender, DataRowChangeEventArgs e) 
{ 
    AAMOpsDBDataSet.PROCFixedIncomeTradesSelectRow row = (AAMOpsDBDataSet.PROCFixedIncomeTradesSelectRow)e.Row; 
    row.Deleted = DateTime.Now; 
    row.DeletedBy = Environment.UserName; 
} 

私はDBへの変更をプッシュするために使用しているコードは以下の通りです:

private void pROCFixedIncomeTradesSelectBindingNavigatorSaveItem_Click(object sender, EventArgs e) 
{ 
    SaveData(); 
} 

private void SaveData() 
{ 
    this.Validate(); 
    pROCFixedIncomeTradesSelectBindingSource.EndEdit(); 
    this.tableAdapterManager.UpdateAll(aAMOpsDBDataSet); 
} 

編集、2日目、私はまだ私は、この質問への答えを見つけるために、物事の任意の提案を望んでいます問題の診断を試みるためにテストできますか?私は私の更新コマンドのテストを行い、datagridviewの行の値を変更し、データベース内の値が正常に更新された保存ボタンをクリックしました。

+0

テーブルアダプタで 'Update()'を呼び出すことはありますか? – Crowcoder

+0

はい、そのコード – Gavin

+0

で私のポストを更新しました。tableAdapterManagerを経由するのではなく、tableadapterの 'Update()'で試してみてください。 – Crowcoder

答えて

0

他のコードが私の望むように動作しない理由はまだ分かりませんが、使用していたイベントハンドラを削除して、テーブルアダプタのRowUpdatingイベントに変更を加えています。このコードは、私が望むやり方で動作します。

private void Adapter_RowUpdating(object sender, System.Data.SqlClient.SqlRowUpdatingEventArgs e) 
{ 
    if (e.StatementType == StatementType.Delete) 
    { 
     pROCFixedIncomeTradesSelectTableAdapter.Adapter.DeleteCommand.Parameters["@Deleted"].Value = DateTime.Now; 
     pROCFixedIncomeTradesSelectTableAdapter.Adapter.DeleteCommand.Parameters["@DeletedBy"].Value = Environment.UserName; 
    } 
} 
関連する問題