次の方法で共有


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

参照

関連項目

CRecordset クラス

階層図

CDatabase::BeginTrans

CDatabase::CommitTrans

CDatabase::Rollback

CDBException クラス