CRecordset::Delete

更新 : 2007 年 11 月

現在のレコードを削除します。

virtual void Delete( );

解説

削除できたときは、レコードセットのフィールド データ メンバには NULL 値が設定されます。また、削除レコードから移動するために Move 関数の 1 つを明示的に呼び出してください。いったん削除レコードから移動すると、その削除レコードには戻れません。データ ソースがトランザクションをサポートしているときは、トランザクションの一部に Delete 関数の呼び出しを含めることができます。詳細については、「トランザクション (ODBC)」を参照してください。

zexz0wfs.alert_note(ja-jp,VS.90).gifメモ :

バルク行フェッチを実装した場合、Delete は呼び出すことができません。呼び出すと、アサートします。CRecordset クラスはデータのバルク行を更新する機構を持っていませんが、ODBC API 関数の SQLSetPos を使用することによって独自の関数を作成できます。バルク行フェッチの詳細については、「レコードセット : バルク行フェッチ (ODBC)」を参照してください。

zexz0wfs.alert_caution(ja-jp,VS.90).gif注意 :

Delete 関数を呼び出したときに、レコードセットが更新可能であり、さらにレコードセットの現在のレコードが有効なレコードでなければエラーが発生します。たとえば、レコードを削除した後に、新しいレコードにスクロールする前に再び Delete を呼び出すと、DeleteCDBException をスローします。

AddNew 関数や Edit 関数とは異なり、Delete 関数では Update 関数を呼び出す必要はありません。Delete 関数の呼び出しが失敗したときは、フィールド データ メンバはそのまま残ります。

例外

このメソッドは、CDBException* 型の例外をスローできます。

使用例

この例は、関数のフレームに作成されたレコードセットを示します。既にデータ ソースに接続されている CDatabase 型のメンバ変数 m_dbCust が存在するものとします。

// 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();

必要条件

ヘッダー : afxdb.h

参照

参照

CRecordset クラス

階層図

CDatabase::BeginTrans

CDatabase::CommitTrans

CDatabase::Rollback

CDBException クラス

その他の技術情報

CRecordset のメンバ