CRecordset::Delete
現在のレコードを削除します。
virtual void Delete( );
解説
削除できたときは、レコードセットのフィールド データ メンバーには NULL 値が設定されます。また、削除レコードから移動するために Move 関数の 1 つを明示的に呼び出してください。 いったん削除レコードから移動すると、その削除レコードには戻れません。 データ ソースがトランザクションをサポートしているときは、トランザクションの一部に Delete 関数の呼び出しを含めることができます。 詳細については、「トランザクション (ODBC)」を参照してください。
注意
バルク行フェッチを実装した場合、Delete は呼び出すことができません。 呼び出すと、アサートします。 CRecordset クラスはデータのバルク行を更新する機構を持っていませんが、ODBC API 関数の SQLSetPos を使用することによって独自の関数を作成できます。 バルク行フェッチの詳細については、資料を参照してくださいレコード セット:一括 (ODBC) 内のレコードをフェッチ。
ヒント
Delete 関数を呼び出したときに、レコードセットが更新可能であり、さらにレコードセットの現在のレコードが有効なレコードでなければエラーが発生します。 たとえば、レコードを削除した後に、新しいレコードにスクロールする前に再び Delete を呼び出すと、Delete は CDBException をスローします。
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