CRecordset::Delete
更新 : 2007 年 11 月
現在のレコードを削除します。
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