CRecordset::Delete
現在のレコードを削除します。
virtual void Delete( );
解説
正常に削除されると、レコードセットのフィールド データ メンバーは null 値に設定され、削除されたレコードを移動するには、明示的に [移動] の関数の 1 種類を呼び出す必要があります。削除されたレコードから移動する場合は、それに戻すことはできません。データ ソースがトランザクションをサポートしている場合、トランザクションの [削除] の呼び出しのパーツを作成できます。詳細については、" " トランザクション (ODBC)を参照してください。
[!メモ]
バルク行フェッチを実装している [削除]を呼び出すことはできません。これはアサーション エラーが発生します。クラス CRecordset が複数行のデータを更新する機構はありませんが、ODBC API 関数 SQLSetPosを使用して独自の関数を記述できます。バルク行フェッチに関する詳細については、" " レコードセット: フェッチ サイズのレコードを (ODBC)を参照してください。
注意 |
---|
レコードセットを更新できない場合、[削除]を呼び出すときは、レコードセットに有効で現在のレコードが必要です; それ以外の場合は、エラーが発生します。[削除] を再度呼び出す前にたとえば、レコードを削除しますが、新しいレコードにスクロールする [削除] は、CDBExceptionをスローします。 |
AddNew と [編集]とは異なり、[削除] の呼び出しは 更新の呼び出しが続きます。[削除] の呼び出しが失敗した場合、フィールド データ メンバーは変更されません。
例外
このメソッドは、型 **CDBException***の例外をスローできます。
使用例
この例では、関数のフレームで作成したレコードセットを示します。m_dbCust既存の例は、既にデータ ソースに接続されて CDatabase 型のメンバー変数を前提としています。
// Create a derived CRecordset object
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();
if(rsCustSet.IsEOF() || !rsCustSet.CanUpdate() ||
!rsCustSet.CanTransact())
{
return;
}
m_dbCust.BeginTrans();
// Perhaps scroll to a new record...
// Delete the current record
rsCustSet.Delete();
// Finished commands for this transaction
if(IDYES == AfxMessageBox(_T("Commit transaction?"), MB_YESNO))
m_dbCust.CommitTrans();
else // User changed mind
m_dbCust.Rollback();
必要条件
Header: afxdb.h