次の方法で共有


CRecordset::Delete

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

virtual void Delete( );

解説

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

注意

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

ヒント

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 のメンバー